我有一个Firebase项目。我希望能够访问属性" text"一旦最近的分支添加到我的数据库中,我的数据库就具有云功能。
我不习惯使用他们的数据库。
我在NodeJs中的代码如下:
exports.messageAnswer = functions.database.ref('/messages')
.onWrite(event => {
const snapshot = event.data;
const val = snapshot.val();
var textMsg = val.text;
var regex = "(bot)";
//var database = firebase.database();
if(!textMsg.match(regex) && textMsg.length > 0){
var id = new Date().getTime().toString();
var object = {
text : "I am the Cloud bot #" + id,
};
admin.database().ref('/messages').push(object);
}
return 0;
});
我的问题是有一个" PUSH ID" :我不知道如何转义此唯一字符串以获取属性的值" text"。
答案 0 :(得分:1)
您可以使用wildcards
获取text
属性,例如:
exports.messageAnswer = functions.database.ref('/messages/{pushid}')
.onWrite(event => {
了解更多信息,请查看:https://firebase.google.com/docs/database/extend-with-functions
您可以通过用大括号括起来将路径组件指定为通配符; ref(' foo / {bar}')匹配/ foo的任何子项。这些通配符路径组件的值在函数的event.params对象中可用。在此示例中,该值可用作event.params.bar
答案 1 :(得分:0)
只要/messages
下的任何数据发生变化,您的当前代码就会被触发。从您的描述中,您似乎只想在添加新消息时触发。您可以使用onCreate
代替onWrite
来实现此目的。此外,您还需要侦听特定消息的更改,而不是整个/messages
节点:
exports.messageAnswer = functions.database.ref('/messages/{messageId}')
.onCreate(event => {
另见Doug关于这些触发器的博文:https://firebase.googleblog.com/2017/07/cloud-functions-realtime-database.html