Javascript Google Cloud Function尝试在FirebaseDatabase中获得新的附加值



我遵循了Firebase的引入,以便在我的数据库中发生更改时触发。我只想记录新的添加值,但不幸的是它不起作用。我的数据库结构如下所示:

"Chat" : {
"-LGe_0ak8UOv9jFRukpZ" : {
"-LGe_3FgL6JkM-VQsg3K" : {
"Message" : "heiii na du",
"createdByUser" : "6dB5rWfSIwez3gO0N0ClBwFJKu53",
"ts" : 1530796459
},
"-LgeqadfFEA" : {
"Message" : "yo",
"createdByUser" : "asfdasdfasdfasdf",
"ts" : 123456677
}
},

所以现在最后一项被添加到我的数据库中,通常,我应该收到一个带有新值的日志,但该方法从未启动。我也没有收到任何错误。这是我的方法:

exports.makeUppercase = functions.database.ref('/Chat')
.onCreate((snapshot, context) => {
// Grab the current value of what was written to the Realtime 
Database.
const original = snapshot.val();
console.log('ts', context.params.pushId, original);
const uppercase = original.toUpperCase();
// You must return a Promise when performing asynchronous tasks inside a 
Functions such as
// writing to the Firebase Realtime Database.
// Setting an "uppercase" sibling in the Realtime Database returns a 
Promise.
return snapshot.ref.parent.child('ts').set(uppercase);
});

问题是您没有正确指定实时数据库路径 您可以使用通配符来监视所有"聊天"路径中的更改,否则从您的代码中,该函数正在监视指定路径中实际键值对的添加,而您的意图是监视子路径的创建 例 :functions.database.ref('/Chat/{pushId}').onCreate((snapshot, context) =>{ //Your execution })这告诉云函数监视"聊天"路径中任何对象的创建 您可以通过context.params.pushId进一步访问 pushId 变量 快乐编码

最新更新