【发布时间】:2019-07-20 12:18:32
【问题描述】:
我正在尝试使用 Firebase Cloud 函数来运行一些基于触发器的函数。
我的数据库是这样的
users{
userId{
dataSets{
dataSet1 { //data }
dataSet2 { //data }
}
weeklyTriggers {
dataSet1{
weekNo{
//updates
}
}
}
}
}
我正在使用onWrite 函数作为特定节点上的触发器:
exports.doSome = functions.database.ref('/users/{userId}/dataSets/{dataSetNo}').onWrite(
async (change, context) => {
const userId = context.params.userId;
const dataSetNo = context.params.dataSetNo;
const weekNo = getWeekNo(); //is a custom function works fine
var databaseRef = admin.database().ref('users');
databaseRef.child(userId).child('weeklyTriggers').child(dataSetNo).child(weekNo).set({
data: 'Some Data'
});
});
我遇到的问题是,当我为dataSet1 进行更新时,它会设置值,但是,当我为dataSet2 设置值时,它会删除整个节点weeklyTriggers,然后创建@ 987654327@
如何确保weeklyTriggers 不会被删除?
编辑:
更新代码
exports.doSome = functions.database.ref('/users/{userId}/dataSets/{dataSetNo}').onWrite(
async (change, context) => {
const userId = context.params.userId;
const yearNo = context.params.yearNo;
const weekNo = getWeekNo();
var ref = change.after.ref.root.child('users');
var dataPath = `${userId}/weeklyTriggers/${dataSetNo}/${weekNo}/data`;
var foo={};
foo[dataPath] = "Some data";
return ref.update(foo);
});
【问题讨论】:
标签: javascript firebase firebase-realtime-database