Firebase功能数据库';添加了child#ux27;仅返回第一个孩子(在许多孩子中)

Firebase功能数据库';添加了child#ux27;仅返回第一个孩子(在许多孩子中),firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我在想怎么回去 {“长度”:“2”,“高度”:“4”},{“长度”:“1.5”,“高度”:“6”},{“长度”:“3”,“高度”:“5.5”},{“长度”:“2”,“高度”:“3.2”}来自我的RTDB中的以下设置我忘了包括什么? { "widgets": { "widget01": { "length": "2", "height": "4" }, "widget02": {

我在想怎么回去
{“长度”:“2”,“高度”:“4”},{“长度”:“1.5”,“高度”:“6”},{“长度”:“3”,“高度”:“5.5”},{“长度”:“2”,“高度”:“3.2”}
来自我的RTDB中的以下设置我忘了包括什么?

{
    "widgets": {
        "widget01": {
            "length": "2",
            "height": "4"
        },
        "widget02": {
            "length": "1.5",
            "height": "6"
        },
        "widget03": {
            "length": "3",
            "height": "5.5"
        },
        "widget04": {
            "length": "7",
            "height": "3.2"
        }
    }
}
我的职能是

exports.widgets = functions.database.ref().onUpdate(event => {
    admin.database().ref('/widget').once('child_added', snapshot =>{
      let data = snapshot.val()
      console.log(data)
      return ({data})
    });
});
但这只是返回
{“length”:“2”,“height”:“4”}
,而不是“widget[i]”中的每个子项。我想

…为每个现有子项触发一次添加的子项

另外,我没有添加
child,而是尝试使用
value
。但是,我不知道如何在
.child()
中引用“widget[I]”,因为它是动态的

exports.widgets=functions.database.ref().onUpdate(事件=>{
admin.database().ref('/widgets').child().once('value',snapshot=>{
让data=snapshot.val()
console.log(数据)
返回({data})
});
});

由于您只调用了一次
('child\u added'
),因此您的回调只会触发一次:对于您附加侦听器的位置中的第一个孩子

如果您需要云函数中的所有子节点,您确实应该使用
一次('value'
),这将一次在快照中提供所有匹配的子节点。然后使用
snapshot.forEach()循环这些子节点。


但是,我不确定您试图返回什么。由于可能有多个子项,您希望返回哪个子项?

由于您调用了一次
('child_added'
),您的回调将只触发一次:对于您附加侦听器的位置中的第一个子项

如果您需要云函数中的所有子节点,您确实应该使用
一次('value'
),这将一次在快照中提供所有匹配的子节点。然后使用
snapshot.forEach()循环这些子节点。


但我不确定你想归还什么。既然可能有多个孩子,你想归还哪个孩子?

你是个救命恩人。我一直在努力解决这个问题,时间比我想承认的要长。我实际上想归还所有的孩子。我根据我的需要对它做了一些调整,现在是:
[[2,4],[1.5,6]
。你是个救命恩人。我想弄明白这一点的时间比我想承认的要长。实际上我想归还所有的孩子。我根据我的需要对它做了一些调整,现在是:
[[2,4],[1.5,6]
exports.widgets = functions.database.ref().onUpdate(event => {    
    admin.database().ref('/widgets').child(<<how to structure?>>).once('value', snapshot =>{
        let data = snapshot.val()
        console.log(data)
        return ({data})
    });
});
exports.widgets = functions.database.ref().onUpdate(event => {    
    admin.database().ref('/widgets').once('value', snapshot =>{
        snapshot.forEach((child) => {
            let data = child.val()
            console.log(data)
            //return ({data})
        });
    });
});