Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用nodejs作为管理员在firebase中进行多个更新_Firebase_Firebase Realtime Database_Google Cloud Functions - Fatal编程技术网

使用nodejs作为管理员在firebase中进行多个更新

使用nodejs作为管理员在firebase中进行多个更新,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我的应用程序中有一个用户集合,现在,我们正在创建一个黑名单(被阻止的用户列表)。这是新的收藏 BlackListByUser | | -- userIdBlackListOwber | | -- userIdBlocked | - name: "Suad" - username: "supersuad" -

我的应用程序中有一个用户集合,现在,我们正在创建一个黑名单(被阻止的用户列表)。这是新的收藏

BlackListByUser
  |
  |
  -- userIdBlackListOwber
         |
         |
         -- userIdBlocked
               |
                - name: "Suad"
                - username: "supersuad"
                - photo: "http://firebase......"
                - status: "S5"
通过Firebase函数,我检测到这些(用户集合)元素中的用户更改,并且我必须更新所有黑名单,无论哪个用户的列表中有黑名单

exports.UpdateUserFromBlackList = functions.database.ref(`/User/{userId}`).onUpdate(event =>{
  ...
  db.ref(`BlackListByUser`).once('value').then(snapBlackList =>{
    snapBlackList.forEach(blackList =>{
       ...
       ...
       db.ref(`BlackListByUser/{blackList.key}/{userId}`).set(userInfo)
     })
  })
})
我认为我的解决方案不是最有效的,因为我必须检查BlackListByUser集合的所有元素(与用户一样多的黑名单)

-nodejs as admin-如何在不迭代的情况下通过所有阻止列表更新所有用户的项目?像这样的

db.ref(`BlackListByUser/{NO_MATTER_KEY}/{userId}`).set(userInfo)

注意:Update()方法已被弃用。

要更新节点,您必须知道其完整路径。因此,如果您还不知道这些,则需要读取或查询数据库以获取路径。Firebase没有与更新BlackListByUser设置等效的
UPDATE BlackListByUser。。。。其中…


可以为您节省一些带宽的是保留一个单独的列表,其中只包含构建路径所需的信息。因此,如果您只需要UID,那么您可以保留一个带有
true
值的UID列表(因为Firebase实时数据库将自动删除没有值的键)。

下面的快速回答,但我不确定我是否非常了解这个问题。三个独立的问题:1)这里的最终目标是什么?2) 您认为当前的实施中存在哪些具体的低效率?3) 是什么让你说“Update()方法不推荐使用”@FrankvanPuffelen Thnks寻求帮助。1.更新所有引用而不按黑名单迭代黑名单。2.因为我必须一个黑名单接一个黑名单,然后,对于每一个黑名单,查找我想要更改的用户id(甚至,我可以浏览所有的列表而没有找到任何东西)。3.在firebase控制台中发出警告。(不在此过程中)。“1.更新所有引用,而不通过黑名单迭代黑名单”,这听起来像是一个错误。