【发布时间】:2019-02-22 18:11:33
【问题描述】:
我正在尝试从云函数内部的 firebase 数据库中检索价格节点,但是当我登录 getPrice() 函数时,它给了我 Promise is pending 警告。我在这里遗漏了什么?
get price Promise {
<pending>,
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] } }
这里是代码sn-p
const price = getPrice();
console.log(getPrice());
function getPrice() {
return db
.ref(`/locations/${id}/price`)
.once('value')
.then(snapshot => {
console.log('snapshot: ', snapshot.val());
return snapshot.val();
});
}
编辑 在 promise 上调用 .then() 时收到此日志消息
console.log(getPrice().then(data => data))
get price Promise {
<pending>,
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] } }
【问题讨论】:
-
您错过了 getPrice 返回承诺而不是实际数据的事实。但你似乎已经知道了。不知道这里还能说什么——你不能把一个异步函数变成一个异步函数。
-
@DougStevenson 但如何获取数据? console.log('snapshot:', snapshot.val());正在返回正确的值。
-
在 promise 上使用 then() 方法。
-
@DougStevenson 仍然无法正常工作。检查编辑
-
您正在记录数据快照。照此处理。 firebase.google.com/docs/reference/js/…
标签: firebase firebase-realtime-database google-cloud-functions