我正在构建一个从引用中获取数据的json api,然后在引用数据中使用ID,我需要从另一个引用中获取其他数据并将它们全部放在对象中。
我想从第一个引用中获取数据,并使用dUid从第二个引用中获取电子邮件。 问题是异步调用,我不能从一个表中获取数据并等待另一个表完成,我无法从第一个ref获取所有数据,然后从第二个获取数据,因为我发送我回复其中一个参考资料的回复:
app.get('/trip-statistics', (request, response) => {
tripRef.once('value').then(
snap => response.status(200).send(extractTripInfo(snap))
);
});
答案 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)