【问题标题】:Firebase cloud functions, not working .forEachFirebase 云功能,不工作 .forEach
【发布时间】:2020-12-01 06:33:01
【问题描述】:

我试图在我的云函数中调用 .forEach 函数,它甚至可以工作,但它没有返回我需要的内容,我试图获取分支键,它只返回 TRUE。

我无法从第二行删除return(我认为这是一个错误),因为一旦我删除它,就会出现错误。

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

我会非常感谢所有提供帮助的人。

【问题讨论】:

  • 你正试图在一个对象上使用forEach
  • @mwilson 我是一个初学者,我不完全明白如何正确地做到这一点..

标签: javascript firebase google-cloud-functions


【解决方案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';
})

【讨论】:

  • 如果有2个分支,如何获取两个分支的key?
  • 我不完全明白这里的一切是如何运作的,但如果你能帮助我,我一定会标记一切可能的
【解决方案2】:

根据文档,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 不正确。在这种情况下,DataSnapshot 对象上存在forEach 函数。希望您在将该答案标记为正确之前看到这一点。

【讨论】:

猜你喜欢
  • 2017-11-23
  • 2020-05-18
  • 2020-02-15
  • 2017-11-12
  • 2018-10-16
  • 2018-07-28
  • 2018-02-21
  • 1970-01-01
  • 2021-09-13
相关资源
最近更新 更多