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



我正试图通过在firebase:中的触发云函数中使用firebase管理员来获取文档

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"
}

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

您的函数需要返回一个promise,该promise在所有异步工作完成后解析。现在,您的函数不返回任何内容,这意味着它将在不等待任何内容的情况下终止。

至少,您应该返回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)}`);
}
}

有关详细信息,请参阅文档。正确处理承诺对于使功能正常工作至关重要。

相关内容

  • 没有找到相关文章

最新更新