Запись данных в Firestore с использованием облачных функций - PullRequest
0 голосов
/ 09 марта 2019

Я добавил триггер, который работает всякий раз, когда к указанному пути добавляется новая запись.

Мой код:

exports.modifyNewForm = functions.firestore
    .document('users/{userId}/form_fillers/{filler}/forms/{form_id}')
    .onCreate((snap, context) => {
      const newValue = snap.data();


      const first_name = "James";
      const last_name =  "Alex";
      const newPhone = 100;

    // Parameters
      const userId = context.params.userId;
      const filler_1 = context.params.filler;
      const form_id = context.params.form_id;

    const userRef = admin.firestore().collection('users').doc(userId).collection("form_fillers").doc(filler_1);

     console.log("new form" + newValue)

 return userRef.get().then(parentSnap => {
        const user = parentSnap.data();
        const phone = user.phone
    if(typeof phone === "undefined") {
                 console.log("OP 1 executed");

              return admin.firestore().collection('users').doc(userId).collection('form_fillers').doc(filler_1).set({first_name:first_name, last_name:last_name,phone:newPhone}, {merge: true}).then(writeResult => {
        console.log("New write: " + writeResult);
    });

        } else {

             console.log("OP 2 executed");

             return admin.firestore().collection('users').doc(userId).collection('form_fillers').doc(filler_1).set({first_name:first_name, last_name:last_name,phone: user.phoneID}, {merge: true}).then(writeResult => {
        console.log("New write: " + writeResult);
    });

        } 
    }); 

});

Хорошо, поэтому в этом коде я пытаюсь добиться этого:

  1. Всякий раз, когда добавляется новая форма, функциятриггеры 100
  2. Считать данные filler и проверить, есть ли номер телефона, я использовал typeof, чтобы проверить, существует ли поле в Firestore, если нет.Установите номер телефона filler на 100.Но если он существует, обновите его, введя поле новых форм, которое phoneID

Что не работает:

  1. этот код работает до строки console.log("new form" + newValue) ия не получаю распечатки ни для одного из следующих if утверждений.Там нет OP 1 executed или OP 2 executed в журналах.
  2. в моей базе данных, сгенерированной случайным образом, есть поле phone со значением 0.

Я новичок в JS, и ваша помощь приветствуется

1 Ответ

1 голос
/ 09 марта 2019

Похоже, ваше обещание userRef.get () почему-то не выполняется. Вы можете добавить поймать в конце и войти в консоль, чтобы увидеть, что это за ошибка, например:

return userRef.get().then(
   ...
)
.catch(
  error => console.log('The error is:', error)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...