我想验证并设置firebase中集合的id。现在我正试图从集合查询中获取一个id号,并将其发送给需要它的函数。下面是需要id#的函数。
const data = lastCustIdGrab(); console.log(`Last number ${data}`);
这是寄信人。我可以在控制台日志中获取文档id,但不知道如何将其发回。
exports.lastCustIdGrab = () => {
db.collection('Customers')
.orderBy('createdAt', 'desc')
.limit(1);
.get()
.then((data) => {
let DOC = data.docs[0];
let ID = DOC.id;
console.log("LOOOP ",ID);
return ID;
})}
这会在looop输出中获取id,但不会返回它!我知道我可以返回数据,因为我已经用下面的任意代码进行了测试,它可以正常工作。返回将其发送回控制台,以便正确地记录在“最后一个数字”输出中。
exports.lastCustIdGrab = () => {
let ID = 12345;
return ID;
}
所以我确信我只是错过了一些简单的东西。谢谢你的帮助!
2条答案
按热度按时间j5fpnvbx1#
在
lastCustIdGrab
函数返回承诺链,如下所示:你应该注意到
lastCustIdGrab
函数是异步的,并返回一个承诺,这意味着您需要执行以下操作:xxe27gdn2#
.get()
是异步的,在您的方法中,您不会返回承诺。所以即使then()
正在执行时,从承诺的解析返回的值不会返回给lastCustIdGrab()
调用,因为承诺永远不会返回。因此(将其切换为使用async/await)尝试以下方法:在调用过程中,等待承诺得到解决,以确保错误处理和方法完成: