访问Firebase数据库

时间:2018-01-01 17:20:20

标签: node.js firebase firebase-realtime-database google-cloud-functions firebase-notifications

我有一个Firebase项目。我希望能够访问属性" text"一旦最近的分支添加到我的数据库中,我的数据库就具有云功能。

我不习惯使用他们的数据库。

enter image description here

我在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"。

2 个答案:

答案 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