Запрос Firebase возвращает пустой объект из узла, но не API

Jakob Weisblat спросил: 13 июня 2018 в 02:41 в: javascript

У меня есть база данных, структура которой немного похожа на

  - 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 всегда пуст. Напротив, когда я выполняю тот же запрос базы данных через REST API, используя клиент python Pyrebase, я получаю разные результаты:

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

Что я могу делать неправильно?

1 ответ

Jakob Weisblat ответил: 13 июня 2018 в 02:55

Выяснилось, что this.pid есть "2780", это не 2780. Поэтому добавление parseInt решило мои проблемы.

Дополнительное видео по вопросу: Запрос Firebase возвращает пустой объект из узла, но не API

Save and Query Firebase Data

Node.js apps on Firebase Hosting Crash Course - Firecasts

Getting Started with Cloud Firestore with Node.js - Firecasts