Я добавил триггер, который работает всякий раз, когда к указанному пути добавляется новая запись.
Мой код:
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);
});
}
});
});
Хорошо, поэтому в этом коде я пытаюсь добиться этого:
- Всякий раз, когда добавляется новая форма, функциятриггеры 100
- Считать данные
filler
и проверить, есть ли номер телефона, я использовал typeof
, чтобы проверить, существует ли поле в Firestore, если нет.Установите номер телефона filler
на 100
.Но если он существует, обновите его, введя поле новых форм, которое phoneID
Что не работает:
- этот код работает до строки
console.log("new form" + newValue)
ия не получаю распечатки ни для одного из следующих if
утверждений.Там нет OP 1 executed
или OP 2 executed
в журналах. - в моей базе данных, сгенерированной случайным образом, есть поле
phone
со значением 0
.
Я новичок в JS, и ваша помощь приветствуется