Firebaseを使用する際に問題が発生しました。エクスプレスサーバを使用してFirebaseデータベースからデータを取得し、そのデータをJadeテンプレートで使用できるオブジェクトとして渡したいと思います。私は2つの異なるエンドポイントからデータを取得し、そのデータを下に示すfirebaseData
オブジェクトのキーの値に設定します。キーと値を持つオブジェクトを受け取る代わりに、私の2つの値はそれぞれPromise {<pending>}
です。私はこれを見るために私のfirebaseData
オブジェクトをコンソールにログアウトし、何もDOMにレンダリングされません。ページをあまりに早くレンダリングしていますか?FirebaseとExpress/Node.jsを使用してプロミスを保留にする
app.get("/cac", function(req, res){
var firebaseData = {};
function getFirebaseData(endpoint){
return firebase.database().ref(endpoint).once("value", function(snapshot){
return snapshot.val();
});
}
firebaseData.members = getFirebaseData("CAC_Members");
firebaseData.events = getFirebaseData("CAC_Events");
console.log(firebaseData);
res.render("cac", firebaseData);
});
:ここに私が働いているコードがある
{ members: Promise { <pending> },
events: Promise { <pending> } }
私は約束して任意の経験を持っていなかったが、私は私が作業する必要がやっているもののように感じています。これを行うより良い方法はありますか?私はどんなポインタにも感謝します!
Woot:
あなたのコードは、すべての約束が満たされるまで、
Promise.all()
と非常に簡単である、待つ必要があります!フランクに感謝します。これは私にとってうまくいった、私は迅速かつ役立つ応答に感謝します。 – m00saca