Firebase - 云功能:枚举[Object Object]

时间:2017-08-02 14:11:30

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

我想从下面的结构枚举成员对象。 我没有node.js的经验,我尝试过以下代码,但似乎没有用。

Structure

exports.sendVaultUnlockedPush = functions.database.ref('/Vaults/{id}/action').onUpdate(event => {
    let status = event.data.val();
    if (status == 'lock') {
        var db = admin.database();
        var vaultRef = db.ref("/Vaults/" + event.params.id);
        vaultRef.once('value').then(function(snapshot) {
            var hasMembers = snapshot.child('members');
            if (hasMembers) {
                var memberRef = db.ref("Vaults/" + event.params.id + "/members");
                memberRef.once('value').then(function(memberSnapshot) {
                    memberSnapshot.forEach(function(element) {
                        console(element.key + " - " + element.val());
                    }, this);
                });
            }
        });
    }
})

它会抛出以下错误:

Error: Firebase.DataSnapshot.forEach failed: Was called with 2 arguments. Expects no more than 1. at Error (native) at z (/user_code/node_modules/firebase-admin/lib/database/database.js:42:1666) at T.forEach (/user_code/node_modules/firebase-admin/lib/database/database.js:114:179) at /user_code/index.js:34:36 at process._tickDomainCallback (internal/process/next_tick.js:135:7)

我只想返回'members'节点的值。我也不知道如何做同样的事情。 任何帮助都非常感谢得到这个排序。谢谢!

1 个答案:

答案 0 :(得分:1)

根据docs forEach 只需要一个参数:

enter image description here

这应该有效:

var values;
memberSnapshot.forEach(function(element) {
    console(element.key);
    values = element.val();
    for (var val in values) {
        if (values.hasOwnProperty(val)) {
            console(val, values[val]);
        }
    }
});

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in