我试图在我的Cloud函数中调用.forEach函数,它甚至可以工作,但是它没有返回我需要的东西,我试图获取分支键,并且只返回TRUE。
我无法删除第二行的收益(我认为这是一个错误),因为一旦我删除收益,就会出现错误。
return admin.database().ref('test/100').once('value').then(function(snapshot) {
return snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
return childKey;
});
}).catch(function(error) {
return 'error';
})
我的数据库:
"test" : {
"100" : {
"ineedthis" : {
"example" : "example"
},
},
}
返回:
True
我将非常感谢所有帮助的人。
答案 0 :(得分:1)
您似乎要在对象上使用.forEach
。那不管用。看来您可以直接返回snapshot.key
:
return admin.database().ref('test/100').once('value').then(function(snapshot) {
return snapshot.key)); // or snapshot.ineedthis
}).catch(function(error) {
return 'error';
})
答案 1 :(得分:0)
根据文档,snapshot.forEach返回一个布尔值,因此它不像典型的js数组迭代器(返回未定义)那样工作。
什么错误迫使您在第二行上return
?可以通过在迭代器之后返回null来解决此问题吗?
return admin.database().ref('test/100').once('value').then(function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
return childKey;
});
return null;
}).catch(function(error) {
return 'error';
})
我希望我能发表评论,因为mwilson是不正确的。在这种情况下,forEach
函数存在于DataSnapshot对象上。希望您在将此答案标记为正确之前先看到它。