下面是我的firebase函数代码的开头。它到达了";oncreate"log语句。几乎需要2分钟才能到达";得到快照";log语句。邀请集合不存在,它没有文档。为什么在空集合上运行查询要花这么长时间?我该如何加快查询速度?提前谢谢。
exports.register = functions.firestore.document("Users/{Email}").onCreate(
async (snap, context) => {
// see if Invitation exists, if yes get FamilyId from there
const collectionRef = admin.firestore().collection("Invitations");
functions.logger.info("oncreate", {structuredData: true});
collectionRef.where("Email", "==", snap.id)
.get().then((querySnapshot) => {
functions.logger.info("got snapshot", {structuredData: true});
if (querySnapshot.empty) {
addUser(snap);
return;
} ....
由于您在云函数代码中执行异步操作,因此需要从代码的顶层返回promise,以便云函数容器知道它要运行多久。
根据您共享的代码,这意味着您需要在此处添加return
:
return collectionRef.where("Email", "==", snap.id)
...
我建议查看有关sync、async和promise的Firebase文档,其中详细解释了如何处理异步调用。