如何通过指定外键创建记录?

时间:2019-05-30 08:13:03

标签: postgresql sequelize.js

我将Users和Bets表作为1:M关系。但是,我不想在没有用户参考的情况下拥有任何投注记录。

enter image description here

所以我有以下约束关系:

Bet.belongsTo(User, {
    foreignKey: {
        allowNull: false
    }
});
User.hasMany(Bet);

这是在Bets中创建外键,不能为空。 这是我打算创建投注记录的方式:

User.findOne({
    where: {email: 'aaa@bbb.ccc'}
}).then(u => {
    Bet.create({
        User: u,
        ...
    })
    .then(b => {
        console.log('done');
    });
})

创建投注时,有什么方法可以指定用户?我知道我可以使用<foreignkey>: u.id来做到这一点,但是我想知道是否有办法在更高级别上做到这一点,例如使用include而不是显式引用外键。

1 个答案:

答案 0 :(得分:1)

在定义UserBet之间的关系时,您将在这些模型上获得一些association methods

使用create方法,您可以改为从Bet实例创建一个新的User,这将在数据库和中同时创建一个新的Bet。 em>将其与User关联。

User.findOne({
    where: { email: 'aaa@bbb.ccc' }
})
    .then(user =>
    {
        user.createBet({ ... })
            .then(bet =>
            {
                console.log('done');
            });
    });