我的应用程序中有一个用户集合,现在,我们正在创建一个黑名单(阻止的用户列表)。这是新的收藏
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集合的所有元素(与用户一样多的blackList),我认为我的解决方案并不是最有效的方法
-nodejs作为管理员-如何在不进行迭代的情况下通过所有阻止列表更新所有用户项目?像这样
db.ref(`BlackListByUser/{NO_MATTER_KEY}/{userId}`).set(userInfo)
注意:不建议使用Update()方法。
答案 0 :(得分:0)
要能够更新节点,您将必须知道其完整路径。因此,如果您还不了解这些内容,则需要读取或查询数据库以获取路径。 Firebase没有等效的UPDATE BlackListByUser SET .... WHERE ...
。
可以为您节省一些带宽的是,仅保留构建路径所需信息的单独列表。因此,如果您只需要UID,则可以保留一个带有true
值的UID列表(因为Firebase Realtime Database将自动删除没有值的键)。