Ich habe eine erste Abfrage, wo ich eine Liste von Objekten erhalten wie folgt aussehen:js sequelize Nest Abfragen/Schleife durch Ergebnisse
{
id
idmarker
idcategory
}
MarkerCategories.findAll({where: {idmarker: data.dataValues.id}})
Das bin ich ein Resultset mit den CategoryIDs der bereitgestellten Marker-ID gehören, erhalten würde. Wie kann ich die id Eigenschaften des Suchresultates in ein Array mit dem Namen-IDs speichern, so kann ich die folgende Abfrage ausführen, um die tatsächliche Kategorie Details zu erhalten:
Categories.findAll({where: {id: { $in: ids}}});
ich bin nicht 100% sicher, wie die Einrichtung der Verbindung mit meiner aktuellen Tabellenstruktur zurück: 'Marker {id, name} Kategorien {id, name} markers_categories {id, idmarker, idcategory} ' Allerdings fand ich die folgende Lösung in der Zwischenzeit: 'Rückkehr MarkerCategories.findAll ({where: {idmarker: data.dataValues.id}}). then (Funktion (Daten)) { var ids = new Array(); data.map (item => ids.push (item.dataValues.idcategory)); Rückgabe Categories.findAll ({wo: {id: {$ in: ids}}}); }); ' – Chris
Ihre Lösung wird funktionieren, aber es ist ein falscher Weg: Es wird 2 Abfragen ausführen; Größe des Codes; Der richtige Weg ist die Definition der Assoziation und die Verwendung von Includes als Code oben. Ihre Assoziation sieht folgendermaßen aus: 'Markers.belongsToMany (Kategorien, {through: MarkerCategories, foreignKey: idmarker, otherKey: idcategory});'. Weitere Informationen finden Sie unter http://docs.sequelizejs.com/en/latest/docs/associations/#belongs-to-many-associations –