2

から2つの異なるフィールドに1つのSequelizeモデルをリンク私は2つのモデルを持っています両方ともBusinessEntityレコードを指しています。だから、私はinvoicesテーブル(Invoiceモデル)に、2つのフィールド、すなわちseller_idbuyer_idがあることを期待しています。別のモデル

BusinessEntity
const BusinessEntity = sequelize.define("business_entity", { 
    display_name: Sequelize.STRING 
}); 
Invoice
const Invoice = sequelize.define("invoice", { 
    series: Sequelize.STRING, 
    number: Sequelize.INTEGER, 
    ... 
}); 

// Indeed, this creates the seller_id and buyer_id fields in the invoice 
Invoice.belongsTo(BusinessEntity, { as: "seller" }); 
Invoice.belongsTo(BusinessEntity, { as: "buyer" }); 

Invoice.belongsTo(BusinessEntity)を呼び出すように私には自然に見えるのではなく、私がしなければ:

だから、私はこのような何かをしました

BusinessEntity.belongsTo(Invoice, { as: "seller" }); 
BusinessEntity.belongsTo(Invoice, { as: "buyer" }); 

... seller_idおよびbuyer_idの列はまったく作成されません。どうして?


business_entitiesテーブルからIDを割り当てて請求書を正常に挿入しました。

includesellerbuyerの出力には、Invoiceをどのように照会する必要がありますか?

私が試した:

Invoice.findOne({ include: [BusinessEntity] }) 

をしかし、それは、このエラーで失敗します。

business_entity is not associated to invoice! 

これを行うには正しい方法は何ですか?どのように問題を解決するには?

答えて

4

findOneクエリを実行するときは、Invoice.findOne({ include: [BusinessEntity] })という別名も重要です。

だから、あなたが必要とするクエリは、この形式になっています。

関連する問題