【问题标题】:Firebase Cloud Function database snapShotFirebase Cloud Function 数据库快照
【发布时间】:2017-06-29 05:15:25
【问题描述】:

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

结果是这样的:

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

我只需要两个 userId。

这是我正在使用的数据库的一部分:

这是代码:

如果有人知道我需要更改什么,我将不胜感激!谢谢!

【问题讨论】:

  • 请添加代码而不是屏幕截图。

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


【解决方案1】:

我认为您需要在value 上有一个 for - in 循环。下面是伪代码 -

var value = snapShot.val();

let namesArray = [];

for (var key in value) {
    if (value.hasOwnProperty(key)) {
        namesArray.push(key);
    }
}

【讨论】:

    【解决方案2】:

    正如 jaibatrik 所说,您需要遍历您的对象。

    如果不获取整个对象,您将无法获取密钥。

    除了运行 for 循环之外,您还可以在快照上运行 forEach

     const uids = [];
    
     snapShot.forEach(single => {
        uids.push(single.key);
     });
    

    另一种选择是从snapShot.val() 对象中获取所有密钥。

     const value = snapShot.val();
    
     const uids = Object.keys(value);
    

    这两种方式实际上是一回事,只是你喜欢哪种方式做事的偏好

    【讨论】:

      猜你喜欢
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-10
      相关资源
      最近更新 更多