【问题标题】:Firebase DeltaSnapshot incorrect Key returned (node.js server)Firebase DeltaSnapshot 返回的密钥不正确(node.js 服务器)
【发布时间】:2017-03-30 09:33:08
【问题描述】:

通过使用 Node.js 的 Google Cloud Functions for Firebase,我试图在两个嵌套的 foreach 循环中获取当前 deltasnapshot 的键。

第一级密钥是正确的'传入'

2nd level is invalid 'incomingABCDEFGHI' // ABCDEFGHI 是账户的唯一 ID

第 3 级密钥正确 '-ewroiu5o345o534535' // Firebase 推送 ID

console.log(snapshot.key);

    snapshot.forEach(function(accountSnapshot){


        accountSnapshot.forEach(function(orderSnapshot){


          console.log(snapshot.key);
          console.log(accountSnapshot.key);
          console.log(orderSnapshot.key);


        });

    });

由于某种原因,第二级键返回第一级和第二级键的组合(不带斜线或空格)

DeltaSnapshot 由数据库“onWrite”触发

有人遇到过类似情况吗?

【问题讨论】:

    标签: node.js firebase google-cloud-functions


    【解决方案1】:

    我遇到了完全相同的问题。如果我的路径是“1/2/3”,则密钥将输出 23 而不是 3。他们有一种方法可以输出孩子的完整路径,而且他们似乎省略了那个斜线。将此添加到 index.js 文件的顶部:

    const functions = require('firebase-functions');
    
    functions.database.DeltaSnapshot.prototype._fullPath = function () {
        var out = (this._path || '') + '/' +(this._childPath || '');
        if (out === '') {
            out = '/';
        }
        return out;
    }
    

    我在 GitHub 上提交了一个 issue,可以在 here 找到。

    【讨论】:

    • 是的,我确实在我的代码中实现了这种类型的解决方案,但最后我只是重新调整了我的数据库结构和调用。至少我不是唯一拥有这个的人。
    猜你喜欢
    • 1970-01-01
    • 2015-10-13
    • 2023-02-06
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2017-08-31
    • 2013-09-15
    • 1970-01-01
    相关资源
    最近更新 更多