Облачная функция возвращает NULL - PullRequest
0 голосов
/ 15 апреля 2020

Я создаю облачную функцию, которая должна возвращать снимок документа из Firestore. В журналах облачных функций консоль регистрирует данные в документе, но когда я вызываю их из React-Native, возвращается ноль.

Вот код самой функции.

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));

введите описание изображения здесь

1 Ответ

0 голосов
/ 15 апреля 2020

Вы не имеете дело с обещаниями правильно. Нет никакой причины иметь здесь new Promise. (На самом деле это редко требуется - только если вы вызываете API, который не использует обещания и использует только функции обратного вызова.) Если вы пытаетесь вернуть содержимое документа вызывающей стороне, это все, что вам нужно :

    return admin
      .firestore()
      .collection("users")
      .doc("za5rnpK69TQnrvtNEsGDk7b5GGJ3")
      .get()
      .then((documentSnapshot) => {
        if (documentSnapshot.exists) {
          return documentSnapshot.data();
        }
        else {
          return { whatever: 'you want' }
        }
      });

Вам придется решить, что вы хотите, чтобы клиент получил, если документа нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...