sequelize插入具有一对一关系的数据

yyyllmsg  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(303)

假设我有两个模型 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 table。

a7qyws3x

a7qyws3x1#

使用设置关联时 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);
});

相关问题