我具有这样的数据库结构:
root: {
timer: 1,
data: {
id1: val,
id2: val,
},
cronology: {
id:{
id1: val,
id2: val,
},
id:{
id1: val,
id2: val,
}
}
我正在尝试创建一个触发器,当修改计时器值时,它将向cronology添加一个包含路径“ / data”实际值的子级。 因此,我在DatabaseReference'/ timer'上使用onUpdate方法创建了一个函数。问题是我不知道如何在此函数中访问'/ data'值
export const cronologyBuilder = functions.database.ref("/timer")
.onUpdate((change, context) => {
const newdata = admin.database.ref('/data');
return admin.database.ref('/cronology').set(newdata);
});
我尝试使用此代码,但是它告诉我newdata对象不适用于set方法。 我如何获取'/ data'路径的值?
答案 0 :(得分:0)
您的代码实际上并未查询任何数据。此行代码仅构建一个Reference对象。它不包含任何数据:
const newdata = admin.database.ref('/data');
如果要查询该位置,则需要在其上调用once()并使用返回的promise等待该位置的数据:
return admin.database.ref('/data').once('value')
.then(snapshot => {
return admin.database.ref('/cronology').set(snapshot.val());
})
我建议阅读Admin SDK database API的文档,以了解如何读取和写入数据。您还需要了解诺言如何工作,以便正确处理它们。