Облачные функции Ошибка: функция возвратила неопределенное, ожидаемое обещание или значение, а также TypeError: Невозможно прочитать свойство 'First_Name' из неопределенного - PullRequest
0 голосов
/ 04 октября 2018

Я пишу простую облачную функцию, которая должна создавать новый документ в определенной коллекции с определенным именем при создании нового пользователя.Я пробовал различные способы кодирования этого, и я думаю, что придумал то, что я считаю наиболее близким к рабочему коду, поскольку я могу получить его самостоятельно.Это рассматриваемый код:

var functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.emailUserRegistration = functions.auth.user().onCreate((user) => {



admin.firestore().collection('UnauthenticatedUsers').doc(user.email).get()
.then(snapshot => {

  var userObject = {
    Email: user.email,
    First_Name: snapshot.data().First_Name, 
    Last_Name:snapshot.data().Last_Name,
    Password:snapshot.data().Password,
    Phone_Number:snapshot.data().Phone_Number,
    Address:snapshot.data().Address
};
  return admin.firestore().collection('Users').doc(user.uid).set(userObject);
})
.catch(error => {
    //Handle the error
    console.log('[YAX]',error)
})

});

И возникают следующие проблемы:

1) Возвращаемая функция не определена иОбещание или значение ожидается.Я не понимаю, почему это проблема, потому что метод set возвращает Promise.Согласно различным учебным пособиям, которые я смотрел, как с официального канала Firebase на YouTube, так и от другого независимого программиста YouTubers, если функция возвращает Promise, вы можете просто вернуть функцию.

2) TypeError: Cannot read property 'First_Name'из неопределенного.Я абсолютно не знаю, почему код не сможет прочитать «First_Name», когда я действительно предложу его в качестве возможной переменной после snapshot.data ().в коде Visual Studio.

3) Это не было упомянуто в заголовке, но по какой-то причине, несмотря на две вышеупомянутые ошибки, выполнение функции возвращается со статусом: «ОК».

Я начинающий разработчик Android, и использование Cloud Functions было советом и решением, которое я получил от службы поддержки Firebase, но, задавая этот конкретный вопрос, они мне еще не ответили.Имейте в виду, что я еще больше новичок в Node.js (я никогда ничего не делал в этом до этого проекта), и, кроме того, что я хочу, чтобы мой код работал, я определенно хочу знать, что здесь происходит, или проще.Я хочу понять, что делает код, что он делает, и почему он не делает то, что говорит моя логика.

Если кому-то понадобится больше контекста, я буду более чем рад предоставить его.

1 Ответ

0 голосов
/ 04 октября 2018

Ответ на ваш первый вопрос

var functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

exports.emailUserRegistration = functions.auth.user().onCreate((user) => {


// return this function
return admin.firestore().collection('UnauthenticatedUsers').doc(user.email).get()
.then(snapshot => {

  var userObject = {
    Email: user.email,
    First_Name: snapshot.data().First_Name, 
    Last_Name:snapshot.data().Last_Name,
    Password:snapshot.data().Password,
    Phone_Number:snapshot.data().Phone_Number,
    Address:snapshot.data().Address
};
  return admin.firestore().collection('Users').doc(user.uid).set(userObject);
})
.catch(error => {
    //Handle the error
    console.log('[YAX]',error)
})
});

Ответ на ваш второй вопрос Лучше, если вы загрузите фотографию вашего UnauthenticatedUsers документ.

 First_Name: snapshot.data().First_Name // this should be same as in your document and it is case sensitive also please check with your document.

Надеюсь, это поможет вам ......

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