我有一个 warmup
和一个 warmup_step
。我正在尝试创建一个 warmup
with an association
但是,当我尝试创建时,它不会将 warmup_id
映射到 warmup_step
。我究竟做错了什么?
// Warmup
module.exports = (sequelize, DATATYPES) => {
const Warmup = sequelize.define(
"warmup",
{
duration: { type: DATATYPES.INTEGER, allowNull: false },
name: { type: DATATYPES.STRING, allowNull: false },
},
{ underscored: true }
);
// Assign an associate function on the model
Warmup.associate = function (models) {
models.Warmup.hasMany(models.WarmupStep);
};
return Warmup;
};
// Warmup Step
module.exports = (sequelize, DATATYPES) => {
const WarmupStep = sequelize.define(
"warmup_step",
{
duration: { type: DATATYPES.INTEGER, allowNull: false }, // seconds
exercise_id: { type: DATATYPES.INTEGER, allowNull: false },
warmup_id: { type: DATATYPES.INTEGER, allowNull: false }, // Map to parent Warmup.
step_index: { type: DATATYPES.INTEGER, allowNull: false }, // position in warmup.
},
{ underscored: true }
);
// Assign an associate function on the model
WarmupStep.associate = function (models) {
models.WarmupStep.belongsTo(models.Warmup, { foreignKey: "warmup_id" });
};
return WarmupStep;
};
创建函数:
Warmup.create(
{
name,
duration,
warmup_steps,
},
{
include: [WarmupStep],
}
)
.then((data) => res.send(data))
.catch((err) => {
console.log("here");
console.log(err);
});
我希望创建
warmup
,然后将 id 用于 warmup_steps
,但它给了我错误 message: 'warmup_step.warmup_id cannot be null'
。我认为这就是使用关联创建为您所做的事情?或者我必须在两个电话中做到这一点?
最佳答案
您还应该在 hasMany 关联中指明 warmup_id :
models.Warmup.hasMany(models.WarmupStep, { foreignKey: "warmup_id" });
关于javascript - 使用 id 时如何使用 Sequelize 创建关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61920947/