云函数返回NULL

时间:2020-04-14 22:01:24

标签: javascript typescript google-cloud-firestore google-cloud-functions

我正在构建一个云功能,该功能应该从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));

enter image description here

1 个答案:

答案 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' }
        }
      });

如果没有文档,您必须决定希望客户收到什么。