猿问

Firestore 需要一分钟才能在 Firebase Cloud Function 中获取文档

我试图通过在 Firebase 的触发云函数中使用 firebase-admin 来获取内部文档:


exports.onTransactionCreated = functions.firestore

  .document("transaction/{id}")

  .onCreate((snapshot, context) => {

    const first = Date.now();

    admin.firestore().collection('myCollection').doc(snapshot.data().myDocumentId).get()

    .then((documentSnapshot) => {

      const second = Date.now();

      functions.logger.log(`seconds total = ${Math.floor((third - first) / 1000)}`);

    }

}

控制台日志显示此结果:


seconds bw 1-2 elapsed = 140

使用的版本:


"engines": {

    "node": "12"

  },

 "dependencies": {

    "firebase-admin": "^9.2.0",

    "firebase-functions": "^3.11.0"

  }

在什么情况下可以检索到这么长的文档?即使在冷启动的情况下,我也不敢相信会这么久。这个问题实际上是我的应用程序的一大痛点,我们将不胜感激任何帮助。


噜噜哒
浏览 81回答 1
1回答

海绵宝宝撒

您的函数需要返回一个在所有异步工作完成后解析的承诺。现在,您的函数不返回任何内容,这意味着它会在不等待任何事情的情况下终止。至少,您应该返回 返回的承诺get().then(...)。exports.onTransactionCreated = functions.firestore  .document("transaction/{id}")  .onCreate((snapshot, context) => {    const first = Date.now();    return admin.firestore().collection('myCollection').doc(snapshot.data().myDocumentId).get()    .then((documentSnapshot) => {      const second = Date.now();      functions.logger.log(`seconds total = ${Math.floor((third - first) / 1000)}`);    }}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答