Javascript 模型A与模型B未关联sequelize错误
我有以下问题,, 我有两种型号: 客户 性别:Javascript 模型A与模型B未关联sequelize错误,javascript,mysql,node.js,express,sequelize.js,Javascript,Mysql,Node.js,Express,Sequelize.js,我有以下问题,, 我有两种型号: 客户 性别: module.exports = (sequelize, DataTypes) => { const Gender = sequelize.define('Gender', { name: DataTypes.STRING, }); //creating association Gender with Employee Gender.associate = funct
module.exports = (sequelize, DataTypes) => {
const Gender = sequelize.define('Gender', {
name: DataTypes.STRING,
});
//creating association Gender with Employee
Gender.associate = function (models) {
models.Gender.hasMany(models.Employee, {
//
});
};
//creating association Gender with Client
Gender.associate = function (models) {
models.Gender.belongsTo(models.Client, {
foreignKey: 'gender_id'
});
};
return Gender; }
我的客户控制器:
const { Client, Gender } = require('../models');
class ClientController {
// Apresenta todos os resgistros do determinado Model
async index (req, res) {
const clients = await Client.findAll({});
return res.status(200).json({
status: 'ok',
clients
});
}
// Apresenta os atributos setados de um resgistro específico
async show (req, res) {
const client = await Client.findAll({
attributes: ['id', 'first_name', 'last_name', 'phone', 'mobile_phone', 'email'],
where: {
id: req.params.id
},
include: [{
model: Gender,
attributes: [],
}],
});
return res.status(200).json({
status: 'ok',
client
});
}
// Cria e salva um resgistro do Model especificado
async store (req, res) {
const client = await Client.create(req.body);
return res.status(201).json({
status: 'created',
client
});
}
// Edita e salva um resgistro do Model especificado
async update (req, res) {
const { first_name, last_name, phone, mobile_phone, email } = req.body;
const client = await Client.update({
first_name: first_name,
last_name: last_name,
phone: phone,
mobile_phone: mobile_phone,
email: email
}, {
where: {
id: req.params.id
}
});
return res.status(200).json({
status: 'updated',
client
});
}
// Exclui um resgistro do Model especificado
async destroy (req, res) {
await Client.destroy({
where: {
id: req.params.id
}
});
return res.status(204).json({
status: 'removed'
});
}
}
module.exports = new ClientController()
但我想到的是:
节点。/bin/www
api:服务器侦听端口3000+0ms
(节点:16328)未处理的PromiserEjectionWarning:SequelizeAgerLoadingError:性别与客户端不关联!
at Function.\u getIncludedAssociation(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\sequelize\lib\model.js:715:13)
在函数处。\u validateincludeelement(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\sequelize\lib\model.js:619:53)
在options.include.options.include.map.include(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\sequelize\lib\model.js:516:37)
在Array.map()处
在函数处。\u validateincludeelements(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\sequelize\lib\model.js:511:39)
在Promise.try.then.then(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\sequelize\lib\model.js:1726:14)
在tryCatcher(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\util.js:16:23)
在Promise.\u settlePromiseFromHandler(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\Promise.js:547:31)
在Promise.\u settlePromise(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\Promise.js:604:18)
在Promise.\u settlePromise0(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\Promise.js:649:10)
在Promise.\u解决方案(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\Promise.js:729:18)
在drainQueueStep(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\async.js:93:12)
位于drainQueue(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\async.js:86:9)
在Async.\u drainQueues(C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\Async.js:102:5)
在Immediate.Async.drainQueues[作为_onImmediate](C:\SISTEMA-REACT-EXPRESS\api\node\u modules\bluebird\js\release\Async.js:15:14)
运行回调时(timers.js:705:18)
在tryOnImmediate(timers.js:676:5)
在processImmediate(timers.js:658:5)
(节点:16328)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。(拒绝id:1)
(节点:16328)[DEP0018]弃用警告:未处理的承诺拒绝已弃用。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程
Obs:在与透视表的n:m关系中,一切正常,有人能帮我吗?您正在用第二个关联覆盖第一个关联:
//creating association Gender with Employee
Gender.associate = function (models) {
models.Gender.hasMany(models.Employee, {
//
});
};
//creating association Gender with Client
Gender.associate = function (models) {
models.Gender.belongsTo(models.Client, {
foreignKey: 'gender_id'
});
};
只需将它们组合成一个:
//creating Gender associations
Gender.associate = function (models) {
models.Gender.hasMany(models.Employee, {
models.Gender.belongsTo(models.Client, {
foreignKey: 'gender_id'
});
};
//creating Gender associations
Gender.associate = function (models) {
models.Gender.hasMany(models.Employee, {
models.Gender.belongsTo(models.Client, {
foreignKey: 'gender_id'
});
};