Как я могу написать в firestore в функции, вызванной firestore? - PullRequest
0 голосов
/ 01 марта 2020

Я установил следующую функцию в firebase, и она срабатывает, если я добавляю новый документ в коллекцию userAdd. И все это работает до тех пор, пока я не пытаюсь записать что-то еще в пожарную. Здесь с помощью переменной firestoreDB. Как только я это делаю, больше ничего не работает. Даже мои журналы больше не пишутся. Что мне здесь не хватает?

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

exports.adduser = functions.
  region('europe-west1')
  .firestore
  .document('userAdd/{useradd}').onCreate((snap, context) => {
    const newValue = snap.data();
    admin.auth().createUser({
      email: newValue.contact_email,
      emailVerified: false,
      password: 'topsecret',
      displayName: newValue.contact_email,
      disabled: false
    })
    .then(function(userRecord) {
      const userData = {
        "_id": userRecord.uid,
        "displayName": newValue.contact_email
      };
      console.log(userData);
      return firestoreDB.collection('users').add(userData);
    })
    .catch(function(error) {
      console.log('Error creating new user:', error);
    });
});

1 Ответ

0 голосов
/ 01 марта 2020

Вы не имеете дело с обещаниями правильно. Ваша функция должна вернуть обещание , которое разрешается после завершения всей асинхронной работы. Прямо сейчас вы игнорируете цепочку обещаний, возвращенную admin.auth().createUser().... Вы должны вернуть эту цепочку обещаний из функции, чтобы Cloud Functions знали, когда ее можно очистить. В противном случае работа может никогда не завершиться.

return admin.auth().createUser(...)
.then(...)
.catch(...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...