Firebase云功能数据库snapShot

时间:2017-06-29 05:15:25

标签: javascript firebase firebase-realtime-database google-cloud-functions

我正在尝试编写Firebase云功能,该功能从我的数据库中获取所有用户并编辑其中的值。但是,为了做到这一点,我需要一种快速的方法来使我的Cloud函数中的代码从数据库接收所有用户ID。现在,我有这个函数打印从数据库中获取的数据,所以我知道我在做什么。

结果如下:

{"WNGOuQqZhZSo5UFovgmgEAVX3Gz1":{"displayName":"jack","email":"test2@gmail.com"},"aRaZVJorkYNwCSzAbMkNJiGwzJm2":{"displayName":"testing","email":"testing@gmail.com"}}

我只需要两个userIds。

这是我正在使用的数据库的一部分: part of database I am working with

这是代码: the code

如果有人知道我需要改变什么,我会非常感激!谢谢!

2 个答案:

答案 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);

两种方式都是有效的,只是偏好你喜欢哪种方式做事