2017-12-27 6 views
0

I eine Rechnung Sammlung, welche (Rechnung ID) und Transaktionen (Array von Objekt), diese Transaktionen Feld hat Menge und Referenz als Eigentum _ID hat, habe ich jetzt Rechnungs-ID und Transaktionsreferenz, und ich bin mir nicht sicher, wie man die Transaktionssuche nach dem Referenzfeld durchläuft.Meteor Mongo, Zugriff Array von Objekten

das ist mein Versuch,

transids enthält alle Transaktion _id

const final = Invoices.find({ 
    invoiceId: filter.invoiceID, 
    transactions: { $in: transids } 
}).map(function (obj) { 
    return { 
    text: obj.reference, 
    }; 
}); 

Antwort

0

Dies wird eher im Zusammenhang mit der map Funktion. Die obj der Kartenfunktion ist Ihr aktuelles Rechnungsdokument, da Sie in Invoices nach Dokumenten gesucht haben.

Wenn Sie also den Text für alle Transaktionen erhalten möchten, die Sie gefunden haben, müssen Sie alle Transaktionen für das aktuelle Rechnungsdokument durchlaufen.

Im folgenden Beispiel wird jedes Rechnungsdokument einem Dokument zugeordnet, in dem die Transaktionsdokumente anhand von Referenztexten zugeordnet werden.

const final = Invoices.find({ 
    invoiceId: filter.invoiceID, 
    transactions: { $in: transids } 
}).map(function (obj) { 
    const transactions = obj.transactions.map(function(transaction){ 
     return { 
      text: transaction.reference, 
     }; 
    }); 
    obj.transactions = transactions; 
    return obj; 
}); 

Hinweis: Wenn die Referenz nur eine ID zu einem anderen Dokument ist, müssen Sie die entsprechende Sammlung aufrufen.

const ref = ReferenceCollection.findOne(transaction.reference); 
//ReferenceCollection is a placeholder here 
return { 
    text: ref.text, 
};