Firebase / nodeJS - 从多个firebase数据引用中获取数据

时间:2017-10-05 19:06:57

标签: javascript json node.js firebase firebase-realtime-database

我正在构建一个从引用中获取数据的json api,然后在引用数据中使用ID,我需要从另一个引用中获取其他数据并将它们全部放在对象中。

  1. first reference
  2. second reference
  3. 我想从第一个引用中获取数据,并使用dUid从第二个引用中获取电子邮件。 问题是异步调用,我不能从一个表中获取数据并等待另一个表完成,我无法从第一个ref获取所有数据,然后从第二个获取数据,因为我发送我回复其中一个参考资料的回复:

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

2 个答案:

答案 0 :(得分:1)

节点8支持async / 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中找到一些示例。

答案 1 :(得分: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)