我正在构建一个云功能,该功能应该从Firestore返回文档快照。在云函数日志中,它的控制台将数据记录在文档中,但是当我从React-Native调用它时,它返回null。
这是函数本身的代码。
export const getUserProfile = functions.https.onCall((data, context) => {
return new Promise((resolve, reject) => {
const info = admin
.firestore()
.collection("users")
.doc("za5rnpK69TQnrvtNEsGDk7b5GGJ3")
.get()
.then((documentSnapshot) => {
console.log("User exists: ", documentSnapshot.exists);
if (documentSnapshot.exists) {
console.log("User data: ", documentSnapshot.data());
documentSnapshot.data();
}
});
resolve(info);
});
});
还添加了来自React-Native的代码以调用该函数。
functions()
.httpsCallable("getUserProfile")({})
.then(r => console.log(r));
答案 0 :(得分:0)
您没有正确处理诺言。这里完全没有理由使用new Promise
。 (实际上,很少需要它-仅当您调用不使用Promise且仅使用回调函数的API时。)如果您试图将文档的内容返回给调用者,则只需要这些:
return admin
.firestore()
.collection("users")
.doc("za5rnpK69TQnrvtNEsGDk7b5GGJ3")
.get()
.then((documentSnapshot) => {
if (documentSnapshot.exists) {
return documentSnapshot.data();
}
else {
return { whatever: 'you want' }
}
});
如果没有文档,您必须决定希望客户收到什么。