2017-02-06 9 views
1

У меня есть две модели Company и CompanyAdmin. Модельная компания имеет много компаний. Я пытаюсь удалить CompanyAdmins, когда материнская компания удалена, используя плагин bookshelf bookshelf-cascade-delete. Я также использую knex для подключения mysql db.

Вот мои модели:Bookshelf cascade delete

const db = bookshelf(connection); 
db.plugin(cascadeDelete); 

const Company = db.Model.extend({ 
    tableName: 'company', 
    idAttribute: 'id', 
    hasTimestamps: true, 
    company_admins: function() { return this.hasMany(CompanyAdmin); }, // console.log(this); 
}, { 
    dependents: ['company_admins'], 
}); 

const CompanyAdmin = db.Model.extend({ 
    tableName: 'company_admin', 
    idAttribute: 'id', 
    hasTimestamps: true, 
    company: function() { return this.belongsTo(Company) }, 
}); 

Когда я console.log (это) в company_admins функция, я получаю эти данные:

ModelBase { 
    tableName: 'company', 
    idAttribute: 'id', 
    hasTimestamps: true, 
    company_admins: [Function: company_admins] } 

Вот мой УДАЛИТЬ обработчик маршрута:

.delete((req, res) => { 
    if (req.user) { 
     Company.forge({ 
      id: req.user.attributes.company_id, 
     }) 
     .destroy() 
     .then(() => { 
      res.status(200) 
      .json({ 
       status: 200, 
       error: false, 
      }); 
      req.logout(); 
     }).catch((err) => { 
      console.log(err); 
      res.status(500) 
      .json({ 
       status: 500, 
       error: err.message, 
      }); 
     }); 
    } else { 
     res.status(401) 
     .json({ 
      status: 401, 
      message: 'User not authenticated', 
     }); 
    } 
}); 

Я получаю эту ошибку:

TypeError: Cannot read property 'hasMany' of undefined

Кто-нибудь с той же проблемой?

ответ

0

Я решил это. Ошибка при импорте книжной полки. код я использовал до этого было:

import bookshelf from 'bookshelf'; 
const db = bookshelf(connection); 

И правильный импорт книжной полки выглядеть следующим образом:

const db = require('bookshelf')(connection); 

Не совсем уверен, почему предыдущий код не работает, но модифицированные версии работы Что ж!

 Смежные вопросы

  • Нет связанных вопросов^_^