【发布时间】:2020-10-20 21:50:07
【问题描述】:
在 MySQL 中使用 Sequelize。我有三个模型。顾问、家庭成员和任命。任命是指顾问和家庭成员。
我已经在 Appointment 模型中定义了外键。创建数据库时-外键可见-当我通过MySQL客户端检查约会表时。表名是冻结的 - 所以表名不可能复数。
顾问模特:
module.exports = (sequelize, DataTypes) => {
const consultant = sequelize.define('consultant', {
ID: {
type: DataTypes.UUID,
primaryKey: true,
allowNull: false
},
FirstName: {
type: DataTypes.STRING,
allowNull: false
},
LastName: {
type: DataTypes.STRING,
allowNull: false
}
{
freezeTableName: true
}
);
return consultant;
};
约会模式:
module.exports = (sequelize, DataTypes) => {
const appointment = sequelize.define('appointment', {
// attributes
ID: {
type: DataTypes.UUID,
primaryKey: true,
allowNull: false
},
ConsultantID: {
type: DataTypes.UUID,
allowNull: false,
references: {
model: 'consultant',
key: 'ID'
}
},
FamilyMemberID: {
type: DataTypes.UUID,
allowNull: false,
references: {
model: 'familymember',
key: 'ID'
}
}
},
{
freezeTableName: true
}
);
appointment.associate = function (models) {
models.appointment.belongsTo(models.consultant, {
foreignKey: 'ConsultantID',
as: 'consultant',
});
models.appointment.belongsTo(models.familymember, {
foreignKey: 'FamilyMemberID',
as: 'familymember',
});
};
return appointment;
};
家庭成员模型:
module.exports = (sequelize, DataTypes) => {
const familymember = sequelize.define('familymember', {
// attributes
ID: {
primaryKey: true,
type: DataTypes.UUID,
allowNull: false
},
FamilyID: {
type: DataTypes.UUID,
allowNull: false
},
FirstName: {
type: DataTypes.STRING,
allowNull: false
},
LastName: {
type: DataTypes.STRING,
allowNull: false
}
},
{
freezeTableName: true
}
);
return familymember;
};
然后在代码中我尝试获取约会并像这样获得相关的家庭成员和顾问
var appointments = await Appointment.findAll({
where: {
AppointmentDateConfirmed: {
$gte: moment().subtract(0, 'days').toDate()
}
}, include:[Consultant, FamilyMember]
}
)
但是我得到一个错误
UnhandledPromiseRejectionWarning: SequelizeEagerLoadingError: 顾问与预约无关!
【问题讨论】:
-
显示一个代码,您可以在其中注册模型的所有关联。 Sequelize 似乎没有看到您的关联。
-
@Anatoly - 我无法很好地格式化评论。我已经更新了上面的主要查询 - 更新 2.0。它有我现在做的代码。
标签: mysql node.js sequelize.js associations