Node.js Sequelize插入联接表(多对多)

Node.js Sequelize插入联接表(多对多),node.js,postgresql,express,sequelize.js,Node.js,Postgresql,Express,Sequelize.js,我在sequelize中建立了两个具有多对多关系的模型。Sequelize正确地创建了联接表,但我无法插入其中。我一直在仔细研究文档的这一部分:但根据它们的示例,我找不到任何有用的东西。不幸的是,他们没有多对多的例子 接下来,我尝试使用setModel函数,这在sequelize代码中产生了一个我无法理解的错误。代码如下 我的两个模型是硬币和分类账 Ledger.findById(22).then(ledger=>{ var c1 = Coin.findById(1); v

我在sequelize中建立了两个具有多对多关系的模型。Sequelize正确地创建了联接表,但我无法插入其中。我一直在仔细研究文档的这一部分:但根据它们的示例,我找不到任何有用的东西。不幸的是,他们没有多对多的例子

接下来,我尝试使用setModel函数,这在sequelize代码中产生了一个我无法理解的错误。代码如下

我的两个模型是硬币和分类账

Ledger.findById(22).then(ledger=>{
    var c1 = Coin.findById(1);
    var c2 = Coin.findById(2);
    ledger.setCoins([c1,c2]).then(sc=>{
        console.log(sc);
    });
});
我的模型使用以下代码相互关联:

Ledger.belongsToMany(Coin,{ through: 'ledger_coin'});
Coin.belongsToMany(Ledger, {through: 'ledger_coin'});

对于使用
get
函数或关联选项写入联接表,谁能给我一些建议或给我指出正确的方向?我可以编写一个自定义函数,但我知道一定有办法做到这一点。

好吧,我用上面的
setCoins
解决了这个问题。显然,它需要id号,而不是对象,所以这是可行的:

Ledger.findById(22).then(ledger=>{
    ledger.setCoins([1,2]).then(sc=>{
        console.log(sc);
    });
});
不过,我还是想更好地理解包含和关联。

2019+ Sequelize 5+之后,
findById()
findByPk()


您好@fredrover,您找到比设置内容更好的解决方案了吗
Ledger.findByPk(22).then(ledger=>{
    ledger.setCoins([1,2]).then(sc=>{
        console.log(sc);
    });
});