如何查询 Firebase 中不存在子项的位置? [复制]

Posted

技术标签:

【中文标题】如何查询 Firebase 中不存在子项的位置? [复制]【英文标题】:How to query where child does not exists in Firebase? [duplicate] 【发布时间】:2017-10-01 04:56:48 【问题描述】:

假设我们有简单的数据结构:

"games": 
     "gameId" 
          "title": "Chess",
          "playedBy" : 
               "userId" : true,
               "userId" : true
           
     

只有游戏,每个游戏都有玩过该游戏的用户的数据。现在我想获取指定用户(假设他的 id 是"1234567")没有玩的所有游戏。我必须查询"playedBy" 不包含"1234567" 的游戏。

如何使用 Firebase 实现这一目标?

Firebase 工作的每种语言都会受到赞赏。

【问题讨论】:

据我所知,目前 Firebase 中不支持“不等于”运算符。 请查看***.com/questions/37752402/… Firebase 只能查询存在的值。见***.com/questions/28582223/… 【参考方案1】:

你可以这样做:

    遍历所有游戏 检查每个游戏是否包含用户 ID

    如果没有,将游戏添加到游戏列表中

    mGamesRef.addChildEventListener(new ChildEventListener() 
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) 
             if(!dataSnapshot.child("playedBy").hasChild(userId)) 
                 gamesList.add(dataSnapshot.getValue(Game.class));
             
        
        ...
    

希望这对你有用。

【讨论】:

如此令人失望的解决方案...

以上是关于如何查询 Firebase 中不存在子项的位置? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 查询子项的子项是不是包含值

Firebase 查询子项的子项是不是包含值

有没有办法在不使用子项的情况下使 Firebase 搜索查询不区分大小写? [复制]

SWIFT:如何通过单击保存按钮在现有子项上添加键值?

Firebase:按儿童计数排序的查询

从 Firebase 获取具有唯一 ID 的子项的值