Firebase云功能无法正常运行

时间:2020-08-11 14:52:02

标签: javascript firebase google-cloud-functions

我试图在我的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

我将非常感谢所有帮助的人。

2 个答案:

答案 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对象上。希望您在将此答案标记为正确之前先看到它。