我正在尝试向我的Firebase数据库发出一个请求,运行以下代码:
const lastCrawl = admin
.database()
.ref('/crawls')
.orderByChild("dateAdded")
.limitToLast(1)
.once('value')
.then((snapshot) => {
return snapshot.val();
});我已经编写了这个based on the docs,只是添加了一些额外的步骤,以便只传递目标目录中的最后一条记录。然而,即使硬编码目录中的一条记录(例如:'/crawls/RECORD-ID')也会抛出相同的错误,这很奇怪,因为代码与文档中的代码基本相同。
目前,它返回以下错误:
Unhandled rejection
TypeError: obj.hasOwnProperty is not a function
at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:553:17)
at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)
at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)
at validateFirebaseData (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:1511:9)
at /srv/node_modules/@firebase/database/dist/index.node.cjs.js:1528:13
at each (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:554:13)发布于 2020-04-14 18:24:07
正如Frank评论的那样,有一个基本的问题,我试图从回调中return,这不会工作,因为它是异步调用的。
我决定解决的方法是返回一个承诺,如下所示:
const getLastCrawl = async () => {
const ref = admin.database().ref('/crawls/')
return ref.orderByChild("dateAdded")
.limitToLast(1)
.once('value')
.then((snapshot) => {
return snapshot.val();
});
}
const lastCrawl = await getLastCrawl()非常感谢你的帮助,弗兰克!
https://stackoverflow.com/questions/61124895
复制相似问题