У меня есть две модели 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
Кто-нибудь с той же проблемой?