首页 > 解决方案 > 将 ID 从一个函数传递到另一个函数并返回

问题描述

我想验证并为 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;   

}

所以我确定我只是缺少一些简单的东西。谢谢您的帮助!

标签: javafirebasegoogle-cloud-functions

解决方案


lastCustIdGrab函数中你需要返回promises 链,如下:

exports.lastCustIdGrab = () => {
  return db.collection('Customers')   // <== See return 
  .orderBy('createdAt', 'desc')
  .limit(1);
  .get()
    .then((data) => {
        let DOC = data.docs[0];
        let ID = DOC.id;
        console.log("LOOOP ",ID);
        return ID;
    });
}

并且您应该注意该lastCustIdGrab函数是异步的并返回一个 Promise,这意味着您需要执行以下操作:

lastCustIdGrab()
.then(data => {
   console.log(`Last number ${data}`);
});

推荐阅读