Firebase查询从节点返回空对象,但未返回API

时间:2018-07-07 16:21:02

标签: javascript node.js firebase firebase-realtime-database

我有一个结构有点像的数据库

  - game
      - 1000
          - clues: ...
          - grid: ...
          - gid: 1000
          - createTime: ...
          - pid: 2780
       - 1001
          - clues: ... 
          - ...

我想检索pid为2780的所有游戏。我在.indexOn上为game设置了pid规则。在节点中,我目前正在做:

db.ref('game').orderByChild('pid').equalTo(this.pid).once('value').then(
        gameSnap => {
            console.log(gameSnap.hasChildren());  // false
            console.log(gameSnap.val()); // null
                gameSnap.forEach(
                    childSnap => {
                        console.log(childSnap); // no printout
                        this.setState(prevState => {
                            games: [...prevState.games, [childSnap.key, gameSnap.child("createTime").val()]]
                        });
                    });
        }
    );

但是gameSnap始终为空。相反,当我使用python Pyrebase客户端通过REST API对数据库执行相同的查询时,会得到不同的结果:

In [257]: len(db.child('game').order_by_child('pid').equal_to(2780).get().each())
Out[257]: 25

我可能做错了什么?

1 个答案:

答案 0 :(得分:0)

事实证明this.pid"2780",不是2780。因此,添加parseInt解决了我的问题。