Mysql Sequelize具有一对一关系的插入数据
假设我有两个模型Mysql Sequelize具有一对一关系的插入数据,mysql,sequelize.js,Mysql,Sequelize.js,假设我有两个模型用户和统计。 这些模型的一对一关系如下所示: Users.hasOne(Statistics, { foreignKey: { name: 'userId', unique: true, allowNull: true, }, onDelete: 'CASCADE' }); 但是,我不理解如何将数据插入子表。我试着这样做,但它不起作用(Statisticstable字段为空),也不会抛出任何错误 Users
用户
和统计
。
这些模型的一对一关系如下所示:
Users.hasOne(Statistics, {
foreignKey: {
name: 'userId',
unique: true,
allowNull: true,
},
onDelete: 'CASCADE'
});
但是,我不理解如何将数据插入子表。我试着这样做,但它不起作用(Statistics
table字段为空),也不会抛出任何错误
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);
});
我做错了什么?如何正确地将数据插入到
统计表中。在使用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);
});