Ich habe eine einfache Firebase-Abfrage in Node.js ausgeführt, die Daten erfolgreich zurückgibt. Die Node.js-App wird jedoch nicht beendet. Es hängt so, als ob es auf etwas gewartet hat, das Firebase komplett ist. Was ist der richtige Weg dies zu implementieren, damit die Node.js App fertig ist?Die Anwendung "Node.js" wird beim Aufruf der Firebase-Datenbankabfrage nicht beendet
Referenzen:
halten unsere Versprechen (und Rückrufe) https://firebase.googleblog.com/2016/01/keeping-our-promises-and-callbacks_76.html
Node.js Firebase Abfrage https://firebase.google.com/docs/reference/node/firebase.database.Query
Code:
Rufen Sie meine Methode, wenn ein Produkt URL zu sehen gibt existiert in Firebase.
firebase.exists(url)
.then(data => console.log(data))
.catch(data => console.log(data));
Methode zur Überprüfung, ob die Produkt-URL in Firebase vorhanden ist. Gibt ein Versprechen zurück. Beachten Sie die Verwendung der Firebase-Methode.
public exists(url): any {
return this.firebase.database().ref('products/').orderByChild("url").equalTo(url).once("value").then(function (snapshot) {
return snapshot.exists();
});
}
Codebeispiel von https://firebase.googleblog.com/2016/01/keeping-our-promises-and-callbacks_76.html
// Fetch a Blog Post by ID. Returns a Promise of an actual object, not a DataSnapshot.
function getArticlePromise(id) {
return ref.child('blogposts').child(id).once('value').then(function(snapshot) {
return snapshot.val();
});
}
ANTWORT: War in der Lage, dies zu lösen, indem process.exit() verwenden, wie unten von Frank vorgeschlagen.
firebase.exists(url)
.then(data => { console.log(data); process.exit(); })
.catch(data => console.log(data));
Dies ist das erwartete Verhalten. Siehe http://stackoverflow.com/questions/18046639/node-process-doesnt-exit-after-firebase-once –