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})
});
});
});