Javascript Access Firebase数据库

Javascript Access Firebase数据库,javascript,node.js,firebase,firebase-realtime-database,google-cloud-functions,Javascript,Node.js,Firebase,Firebase Realtime Database,Google Cloud Functions,我和Firebase有一个项目。我希望在数据库中添加最近的分支后,立即使用云函数访问数据库的属性“text” 我不习惯使用他们的数据库 我在NodeJs中的代码如下: exports.messageAnswer = functions.database.ref('/messages') .onWrite(event => { const snapshot = event.data; const val = snapshot.val(); var t

我和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”的值。

您可以使用
通配符
来获取
text
属性,如下所示:

 exports.messageAnswer = functions.database.ref('/messages/{pushid}')
.onWrite(event => {
有关更多信息,请查看以下内容:

您可以将路径组件指定为通配符,方法是将其用花括号括起来;ref('foo/{bar}')匹配/foo的任何子级。这些通配符路径组件的值在函数的event.params对象中可用。在本例中,该值可用作event.params.bar


只要
/messages
下的任何数据发生更改,就会触发当前代码。根据您的描述,您似乎只希望在添加新消息时被触发。您可以使用
onCreate
而不是
onWrite
来实现这一点。此外,您还需要侦听特定消息的更改,而不是整个
/messages
节点的更改:

exports.messageAnswer = functions.database.ref('/messages/{messageId}')
.onCreate(event => {
另请参阅Doug关于这些触发器的博客文章: