假设我有两个模型 Users
和 Statistics
。
这些模型的一对一关系如下所示:
Users.hasOne(Statistics, {
foreignKey: {
name: 'userId',
unique: true,
allowNull: true,
},
onDelete: 'CASCADE'
});
但是,我不明白如何向子表中插入数据。我尝试这样做,但它不起作用(Statistics
表字段为空)也不会引发任何错误。
Users
.build({
username: req.body.username,
email: req.body.email,
Statistics: {
gamesWon: 10 // For example.
}
},
{
include: [ Statistics ]
})
.save()
.then(() => {
res.render('./user/register', { success: true } );
})
.catch(sequelize.ValidationError, (err) => {
res.send(err);
});
我做错了什么?如何正确地将数据插入 Statistics
表。
最佳答案
在使用hasOne
方法建立关联时,它会向父类添加getter和setter以及createChild方法。
它将添加用户实例方法“getStatistics”、“setStatistics”和“createStatistics”
要将统计信息链接到用户,您需要调用该方法
user.createStatistics({
gamesWon: 10
})
针对您的情况。
完整的例子应该是:
Users
.create({
username: req.body.username,
email: req.body.email,
})
.then(user => {
user.createStatistics({gamesWon: 10 })
})
.catch(sequelize.ValidationError, (err) => {
res.send(err);
});
关于mysql - Sequelize具有一对一关系的插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49825372/