簡體   English   中英

Sequelize 插入連接表(多對多)

[英]Sequelize insert into join table (many-to-many)

我在 sequelize 中設置了兩個具有多對多關系的模型。 Sequelize 正確創建了連接表,但我無法插入其中。 我一直在研究文檔的這一部分: http : //docs.sequelizejs.com/en/latest/docs/associations/#creating-with-associations,但我無法根據他們的示例進行任何工作。 不幸的是,他們沒有多對多的例子。

接下來我嘗試使用 setModel 函數,這在續集代碼的深處產生了一個我無法弄清楚的錯誤。 該代碼如下。

我的兩個模型是 Coin 和 Ledger。

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()

Ledger.findByPk(22).then(ledger=>{
    ledger.setCoins([1,2]).then(sc=>{
        console.log(sc);
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM