【发布时间】:2017-04-04 21:00:39
【问题描述】:
函数正在观察proposals/{jobid}/{propid}。当一个新的提案被添加,并且child("isinvitation") 为空时,该函数成功地将新节点写入proposals/sent,然后将增量添加到作业jobs/${jobid} 的提案子节点。
删除提案时功能失败。 userRef.child(jobid).remove() 也没有被触发,减少到工作 jobs/${jobid} 的提案子级不会发生。
exports.CountProposals = functions.database.ref("/proposals/{jobid}/{propid}").onWrite((event) => {
const jobid = event.params.jobid;
const userId = event.params.propid;
const isinvitation = event.data.child("isinvitation").val();
if (!isinvitation) {
const userRef = admin.database().ref(`users/${userId}/proposals/sent`);
if (event.data.exists() && !event.data.previous.exists()) {
userRef.child(jobid).set({
timestamp: admin.database.ServerValue.TIMESTAMP
});
} else if (!event.data.exists() && event.data.previous.exists()) {
userRef.child(jobid).remove();
}
}
const collectionRef = admin.database().ref(`/jobs/${jobid}`);
return collectionRef.once('value').then(snapshot => {
if (snapshot.val() !== null) {
const countRef = collectionRef.child("proposals");
countRef.transaction(current => {
if (event.data.exists() && !event.data.previous.exists()) {
return (current || 0) + 1;
} else if (!event.data.exists() && event.data.previous.exists()) {
return (current || 0) - 1;
}
});
}
});
});
控制台日志不显示任何错误。
【问题讨论】:
标签: firebase firebase-realtime-database google-cloud-functions