加入两个以上 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
}
]
});
我有两个模型用户,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
}
]
});