【发布时间】:2020-08-11 13:01:42
【问题描述】:
我正在努力寻找有关在使用 Node.js 构建的函数触发器中使用从 firebase 提取的地图的文档。每次我找到示例代码时,它都会使用我的 index.js 文件无法理解的函数。
示例数据库结构:
db.collection('users').doc('abc')
让 'abc' 保存一个名为 'uids' 的字段,它是 String 的 Map,bool
我想在我的 Firebase 触发器函数中迭代 'uids'map 以更新所有值为“false”的元素
我无法找出在我的 index.js 中使用地图进行任何操作/逻辑的适当方法。
这是我尝试过的两个比较连贯的 sn-ps,在网上找到的:
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
}
});
在搜索有关我的 index.js 代码的特定语法时,我是否错误地理解这是一个 Node.js 文件?我不明白为什么我要找到数十种方法来做同样的事情。似乎完全随机的解决方案到处都在我的文件中不起作用。
解决方案:: 感谢 cmets 并回答帮助解决此问题。 我能够使用“Object.elemets(uids)”来投射 Firebase 地图以提取键和值。
for (let [key, value] of Object.elements(uids)) {
//do stuff
}
【问题讨论】:
-
通常有很多方法可以完成工作。您在这些尝试中遇到的具体问题是什么?有错误信息吗?什么不按您期望的方式工作。请编辑问题以明确。请注意,Firestore 文档中的地图字段将显示为纯 JavaScript 对象,因此您将像在 JavaScript 中一样正常处理它们。
-
谢谢道格。稍微整理了一下文字。我遇到的具体问题是试图操纵 JS 'map' 对象来执行一些逻辑。当我在 var 中有 uid 时,我不知道如何访问或迭代这些条目。
-
在 JS 中有很多方法可以迭代一个对象。这很常见。见:stackoverflow.com/questions/14379274/…
-
ahhh 使用 Object.x 进行转换是关键技巧。谢谢!
标签: javascript node.js google-cloud-firestore google-cloud-functions