如何在使用id时使用Sequelize创建关联?"/>
如何在使用id时使用Sequelize创建关联?
我有一个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
,然后为warmup_steps
使用ID,但这给了我错误message: 'warmup_step.warmup_id cannot be null'
。我以为这就是创建关联为您所做的事情?还是我必须在两个电话中这样做?
您还应该在hasMany关联中指出warmup_id:
models.Warmup.hasMany(models.WarmupStep, { foreignKey: "warmup_id" });
更多推荐
如何在使用id时使用Sequelize创建关联?
发布评论