【发布时间】:2020-07-27 20:47:23
【问题描述】:
我在我的 firebase 函数中使用了以下函数,但我无法正确处理 Promise。
export const addNewMember_v0 = functions.https.onCall( async (data, context) => {
if(context.auth){
const memberName = data.memberName;
const phone = data.phone;
try {
const querySnapshot = await db.collectionGroup('memberPrivate')
.where('phone', '==', phone).get();
if (querySnapshot === null) {
const batch = db.batch();
const memberDoc = db.collection('members').doc();
const memberPrivateDoc = memberDoc.collection("memberPrivate").doc("info");
batch.set(
memberDoc,
{'memberName':memberName},
);
batch.set(
memberPrivateDoc,
{'memberName':memberName}
);
Promise.resolve(batch.commit());
return {available: true, phone: phone, success: true};
} else {
return {available: false, phone: phone, success: false};
}
}
catch(error) {
console.log(error);
return {error: error, success: false};
}
} else {
return {error: "Not Authenticated", success: false};
}
});
当我使用 firebase deploy 部署此代码时,我收到此错误:必须正确处理承诺
我应该改变什么来正确处理承诺?
我阅读了很多关于如何处理 Promises 的文档,但我一直没能做到。如果你能帮上忙,那就太好了。
【问题讨论】:
-
不确定为什么要调用 Promise.resolve()。这根本不适合这里。您的函数还需要返回一个 Promise,该 Promise 使用要发送给调用者的数据进行解析。
标签: javascript firebase promise google-cloud-functions