データを正常に返すNode.jsで実行される単純なFirebaseクエリがあります。ただし、Node.jsアプリケーションは終了しません。 Firebaseが完了するのを待っているかのようにハングします。 Node.jsアプリケーションが完了するようにこれを実装する正しい方法は何ですか?Node.js Firebaseデータベースクエリを呼び出すときにアプリケーションが終了しない
参考文献:
維持する私たちの約束(およびコールバック) https://firebase.googleblog.com/2016/01/keeping-our-promises-and-callbacks_76.html
のNode.js Firebaseクエリ https://firebase.google.com/docs/reference/node/firebase.database.Query
コード:
は、私は、製品のURLがどうかを確認する方法が存在する呼び出しFirebaseに存在します。
firebase.exists(url)
.then(data => console.log(data))
.catch(data => console.log(data));
Firebaseに製品URLが存在するかどうかを確認する方法。約束を返します。 firebase onceメソッドの使用に注意してください。 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();
});
}
ANSWERから
public exists(url): any {
return this.firebase.database().ref('products/').orderByChild("url").equalTo(url).once("value").then(function (snapshot) {
return snapshot.exists();
});
}
コード例は:以下のフランクにより示唆されるようにprocess.exit()を使用することによってこの問題を解決することができました。
firebase.exists(url)
.then(data => { console.log(data); process.exit(); })
.catch(data => console.log(data));
これは予想された動作です。 http://stackoverflow.com/questions/18046639/node-process-doesnt-exit-after-firebase-once –