我正在构建一个云函数,该函数应该从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));
在此处输入图像描述
您没有正确处理承诺。这里根本没有理由有new Promise
。(事实上,很少需要它-只有当你调用的API不使用promise,只使用回调函数时。(如果你试图将文档的内容返回给调用者,这就是你所需要的:
return admin
.firestore()
.collection("users")
.doc("za5rnpK69TQnrvtNEsGDk7b5GGJ3")
.get()
.then((documentSnapshot) => {
if (documentSnapshot.exists) {
return documentSnapshot.data();
}
else {
return { whatever: 'you want' }
}
});
如果没有文档,您必须决定您希望客户收到什么。