Firebase 函数:Node.js:迭代存储在 firebase 文档字段中的映射

Mak*_*ros 3 javascript node.js google-cloud-functions google-cloud-firestore

我正在努力寻找有关在我使用 Node.js 构建的函数触发器中使用从 firebase 中提取的地图的文档。每次我找到示例代码时,它都会使用我的 index.js 文件无法理解的函数。

数据库结构示例:
db.collection('users').doc('abc')
让 'abc' 保存一个名为 'uids' 的字段,该字段是一个 String、bool 的映射

我想在 Firebase 触发器函数中迭代“uids”map 以更新所有值为“false”的元素

我无法找出使用 index.js 中的地图进行任何操作/逻辑的适当方法。

这是我在网上找到的两个更连贯的片段:

db.collection('users').doc('abc').get().then((doc) => {
  var uids = doc.data().uids;

//try 1
  uids.forEach((value, key, map) => {
    //do stuff
  });

//try 2
  for (var uid in uids) {
    if (uid.val() == false)
      //do stuff
  }
});
Run Code Online (Sandbox Code Playgroud)

当搜索有关我的 index.js 代码的特定语法时,我是否错误地理解这是一个 Node.js 文件?我不明白为什么我要找到数十种方法来做同样的事情。似乎到处都张贴了完全随机的解决方案,但在我的文件中不起作用。

解决方案::感谢您的评论和回答以帮助解决此问题。我能够使用“Object.elemets(uids)”来投射 firebase 地图来提取键和值。

for (let [key, value] of Object.elements(uids)) {
  //do stuff
}
Run Code Online (Sandbox Code Playgroud)

alc*_*yon 6

Can you try:

db.collection('users').doc('abc').get().then((doc) => {
  var uids = doc.data().uids;
  for (var uid of Object.keys(uids)) {
    console.log(uid, uids[uid]); // key, value
  }
});
Run Code Online (Sandbox Code Playgroud)