我添加了一个触发器,该触发器在将新记录添加到指定路径时都有效。
我的代码:
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);
});
}
});
});
好的,在这段代码中,我正在尝试实现这一点:
filler
数据并检查是否有电话号码,我已使用typeof
检查Firestore中是否存在该字段,如果没有。将filler
的电话号码设置为100
。但是,如果存在,请使用新提交的phoneID
什么不起作用:
console.log("new form" + newValue)
行,以下if
的任何语句我都无法得到打印。日志中没有OP 1 executed
或OP 2 executed
。
phone
字段,值为0
,是随机生成的。 我是JS的新手,感谢您的帮助
答案 0 :(得分:1)
看起来像您的“ userRef.get()”承诺在某种程度上失败了。您可以在末尾添加一个catch并在那里进行控制台登录以查看错误所在,例如:
return userRef.get().then(
...
)
.catch(
error => console.log('The error is:', error)
);