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);
});