2

Ich habe zwei Modelle:Verknüpfung eines Sequelize-Modell auf zwei verschiedenen Feldern aus einem anderen Modell

  • BusinessEntity und
  • Invoice

Ich möchte die Invoice ein seller und ein buyer haben, beide zeigen auf BusinessEntity Datensätze. Also, ich erwarte in der invoices Tabelle (das Invoice Modell) zwei Felder: seller_id und buyer_id.

Also, habe ich etwas wie folgt aus:

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" }); 

Es ist nicht natürlich erscheinen mir Invoice.belongsTo(BusinessEntity) zu nennen, aber wenn ich tun:

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

... die Spalten seller_id und buyer_id werden nicht erstellt. Warum?


eingefügt I erfolgreich eine Rechnung, IDs aus der Tabelle business_entities assiging.

Wie soll ich die Invoice abfragen soll, wenn ich die seller und die buyer in der Ausgabe include wollen?

Ich habe versucht:

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

Aber das nicht mit diesem Fehler:

business_entity is not associated to invoice! 

Was ist der richtige Weg, dies zu tun? Wie löst man das Problem?

Antwort

4

Wenn Sie die findOne-Abfrage durchführen: Invoice.findOne({ include: [BusinessEntity] }) ist es wichtig, auch den Alias ​​zu erwähnen.

So ist die Abfrage, die Sie brauchen, hat dieses Format:

Verwandte Themen