Gibt es eine Möglichkeit, Iteration der Map-Funktion zu pausieren, so dass ich Antwort von meiner Abfrage erhalten und in einem Objekt speichern kann.Füllen Array von Objekten mit Daten aus mehreren MySQL-Abfragen
Also meine Daten sind ein Array von Objekten und ich möchte Eigenschaft "Empfänger" für jedes einzelne Objekt in Array hinzufügen, so dass ich map funtion durch mein Array Schleife Problem, ist in Rückruf: D, mein Objekt Daten nach erhalten Mein Express sendet Antwort, so musste ich mit Timeout delay Antwort, ich weiß, es ist nicht die richtige Lösung, aber es funktioniert für jetzt, weil ich nur 40-50 Datensätze in der Datenbank haben. Hier
ist der Code:
data.map((x) => {
let sql = `
SELECT username
FROM message
JOIN message2user ON message.message_id = message2user.message_id
JOIN user on message2user.receiver_id = user.user_id
where message.message_id = ?;
`;
testDB.query(sql, x.message_id, (err, dataReceivers) => {
if (err) console.log(err);
x["receivers"] = dataReceivers;
})
});
setTimeout(() => {
res.json({ success: true, data: data });
}, 1000);
verwende ich ausdrücklich für meine API Routen und MySQL Modul für Knoten, vielleicht sould ich Promises oder Asynchron-Funktionen von Knoten verwenden, ich weiß nicht.
Haben Sie irgendwelche Ideen ??
Ich würde empfehlen, Ihre SQL-Abfrage umschreiben, um nur das gesamte Array in einer Abfrage zu verarbeiten, aber wenn Sie das nicht möchten, gebe ich Ihnen einen Vorschlag mit Versprechen. –
Hmm, was meinst du ganzes Array in einer Abfrage? Ich brauche Array von Objekten (Objekte sind einige zufällige Nachrichten) und einige Nachricht kann mehrere Empfänger haben, ich habe Tabelle, die speichert, die diese Nachricht erhalten, aber ich weiß nicht, wie dieses Objekt mit Array von Reverivers aus dieser Tabelle zu füllen ... @PatrickRoberts –