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'                   
  });
};