2017-10-05 24 views
0

参照からデータを取得するjson apiを構築しています。参照データ内のIDを使用して、別の参照から他のデータを取得してオブジェクトに格納する必要があります。Firebase/nodeJS - 複数のfirebaseデータ参照からデータを取得する

  1. first reference
  2. second reference

私は、第1の基準からデータを取得し、第二の基準から電子メールを取得するためにDUIDを使用したいです。 問題は非同期呼び出しで、ただ1つのテーブルからデータを取得し、もう一方のテーブルが終了するのを待つことができず、最初のrefからすべてのデータを取得できず、次に2番目からすべてのデータを取得できません。バックこのような参考文献の一つの呼び出し:

app.get('/trip-statistics', (request, response) => { 
    tripRef.once('value').then(
    snap => response.status(200).send(extractTripInfo(snap)) 
    ); 
}); 
+0

https://youtu.be/NgZIb6Uwpjc - 正確には、あなたの問題を説明し、このビデオをチェックしてください –

答えて

0

ノード8は、これはかなり簡単にする必要のある非同期/のawait構文をサポートしています:

// Note the `async` keyword in front of the function 
app.get('/trip-statistics', async (request, response) => { 

    // we'll wait for the first promise, its value will be put into the `tripValue` variable 
    const trip = await tripRef.once('value').then(snap => snap.val()) 

    // whenever the trip is resolved, we will create a new promise, which depends on `trip.dUid` 
    const driver = await driverRef.child(trip.dUid).once('value').then(snap => snap.val()) 

    // when both promises are fulfilled, we can tell the response to send both objects 
    response.status(200).send({ trip, driver }) 
}) 

エラーをキャッチすることを忘れないでください、 this articleにいくつかの例があります。

0

あなたは、この使用して、ネストされた.them文を達成することができます

app.get('/trip-statistics') 
    .then(request, response) => { 
    // add stuff from url1 response to url2 
    return app.get('/driver'+ response.data[0].id) 
    }) 
    .then(request, response) => { 
    // add stuff from url2 response to url3 
    return rp(url3) 
    }) 
    .catch(err => console.log) 
関連する問題