我正在尝试编写Firebase云功能,该功能从我的数据库中获取所有用户并编辑其中的值。但是,为了做到这一点,我需要一种快速的方法来使我的Cloud函数中的代码从数据库接收所有用户ID。现在,我有这个函数打印从数据库中获取的数据,所以我知道我在做什么。
结果如下:
{"WNGOuQqZhZSo5UFovgmgEAVX3Gz1":{"displayName":"jack","email":"test2@gmail.com"},"aRaZVJorkYNwCSzAbMkNJiGwzJm2":{"displayName":"testing","email":"testing@gmail.com"}}
我只需要两个userIds。
这是我正在使用的数据库的一部分:
这是代码:
如果有人知道我需要改变什么,我会非常感激!谢谢!
答案 0 :(得分:1)
我认为你需要有一个for-in循环value
。下面是伪代码 -
var value = snapShot.val();
let namesArray = [];
for (var key in value) {
if (value.hasOwnProperty(key)) {
namesArray.push(key);
}
}
答案 1 :(得分:0)
正如jaibatrik所说,你需要迭代你的对象。
如果没有抓取整个对象,就无法获取密钥。
除了运行for循环,您还可以在快照上运行forEach
。
const uids = [];
snapShot.forEach(single => {
uids.push(single.key);
});
另一个选项是从snapShot.val()
对象获取所有密钥。
const value = snapShot.val();
const uids = Object.keys(value);
两种方式都是有效的,只是偏好你喜欢哪种方式做事