Ich habe so viel Zeit damit verbracht, zu versuchen, die Antwort hier zu finden und nichts zu finden. Hoffe, jemand kann mich erleuchten ..Javascript: Verwendung von Daten aus einer asynchronen Callback-Funktion (MongoClient)
Ich habe Code, der einen asynchronen Aufruf an eine Datenbank und die Rückgabe von Daten in einer Callback-Funktion (in meinem Fall verwende ich MongoClient, der eine Promise zurückgibt). Ich kann jedoch nicht herausfinden, wie die resultierenden Daten verwendet werden, um Variablen auf Funktionsebene tatsächlich zu setzen - immer wenn ich es versuche, ist der resultierende Wert, den ich protokolliere, entweder nicht definiert oder ein ausstehendes Promise-Objekt.
Es gibt viele Beiträge zu diesem Thema, aber ich kann keine Methoden finden, die funktionieren, wenn ich versuche, sie anzuwenden. Alle und alle Hilfe dankbar erhalten!
function lookupOneDbEntry(key, value) {
var responseData = "initial data"
// search for the entry in the database
db.collection("my_collection").findOne({key: value}, function(err, result) {
if (err) {
//if database throws an error
responseData = "db error";
}
else {
// if the entry is found, return the data
responseData = result;
}
});
return responseData;
}
EDIT: Ich kenne andere Beiträge zu diesem Thema (wie dieser here und während erschöpfende Dokumentation in einem Ausmaß nützlich ist, I; habe Probleme mit diesen Daten praktisch in einer realen Umsetzung wie die oben. Daher meine Frage hier.
Mögliches Duplikat [Wie kann ich die Antwort von einem asynchronen Aufruf zurückkehren?] (Http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an -asynchroner Anruf) – Andreas
Diese Frage, die Sie verknüpften, hat wirklich alle Informationen, die Sie benötigen. Herr Klings Antwort enthält eine umfangreiche Menge an Erklärungen und verschiedene Lösungen für verschiedene Situationen. – Pointy
Können Sie zeigen, wie Sie versuchen, das Versprechen zu verwenden? – Victory