加入两个以上 table 在 sequelize 中不起作用

joining of more then two table is not working in sequalize

我有两个模型用户,CandidateExperience,所以当我加入两个表时它不起作用。

我必须在用户模型中添加关联吗

module.exports = (sequelize, DataTypes) => {
  const Users = sequelize.define('Users', {
    name: {type: DataTypes.STRING},
    lName: {type: DataTypes.STRING},
    email: {type: DataTypes.STRING},
    }, {
    hooks: {},
    underscored: true
  });
  Users.associate = function (models) {
    Users.hasMany(models.CandidateDetails, {
      as: 'CandidateDetails',foreignKey: 'userId',constraints: false
    })
    Users.hasMany(models.CandidateExperience, {
      as: 'CandidateExperience',foreignKey: 'userId',constraints: false
    })
  };
  return Users;
};

候选人经验模型

module.exports = (sequelize, DataTypes) => {
  const CandidateExperience = sequelize.define('CandidateExperience', {
    candidate_exp_id: {type: DataTypes.UUID,primaryKey: true},
    companyName: { type: DataTypes.STRING},
    designation: {type: DataTypes.STRING}
  }, {
    underscored: true
  });
  CandidateExperience.associate = function (models) {
    CandidateExperience.belongsTo(models.Users, {
      as: 'User',foreignKey: 'userId',constraints: false})
  };
  return CandidateExperience;
};

但是如果我使用这个查询,它会给我错误

return models.Users.findAll({
            where: {userType:'engineer'},
            include: [
                { model: models.CandidateExperience, as: "experienceDetail" ,
                 required:       false},
                ]
          });

您正在使用别名将 User 与 CandidateExprience 相关联 'CandidateExperience' 但是你用 'exprienceDetail'.

调用 User.findAll()

试试其中一个

Users.hasMany(models.CandidateExperience, {
      as: 'experienceDetail',foreignKey: 'userId',constraints: false
})
Users.findAll({
            where: {userType:'engineer'},
            include: [
              { 
                 model: models.CandidateExperience, 
                 as: "CandidateExperience", 
                 required: false
              }
            ]
});