Не можете сделать запрос из Firebase для моего приложения React Native? - PullRequest
0 голосов
/ 27 августа 2018

Кажется, я могу получить все моих данных из моей базы данных Firebase Realtime со следующими данными:

let itemsRef = firebaseApp.database().ref('/');

itemsRef.on('value', (snapshot) => {
  let data = snapshot.val();
  let item = Object.values(data);
  this.setState({item});
});

Но когда я пытаюсь выполнить запрос с конкретными параметрами, а не просто получить всеинформация, я всегда получаю эту ошибку:

@ firebase / database: FIREBASE WARNING: Исключение было вызвано обратным вызовом пользователя.

TypeError: Невозможно преобразовать undefined или null в объект

Вот как я пытаюсь запрашивать информацию ... буквально следуя документации, и каким-то образом мой код работает, когда я получаювсю информацию, но не тогда, когда единственное изменение, которое я делаю, это добавление запроса?

let itemsRef = firebaseApp.database().ref('/');

itemsRef.orderByChild('roundedBPM').equalTo('100').on('value', (snapshot) => {
  let data = snapshot.val();
  let item = Object.values(data);
  this.setState({item});
});

У кого-то еще есть проблемы с запросами из Firebase или я что-то не так делаю?

Вот как мои данныепостроен на базе Firebase:

Firebase data screenshot

1 Ответ

0 голосов
/ 27 августа 2018

Я бы попробовал инициализировать firebase в dbConfig.js, например, так:

import * as firebase from 'firebase';

let config = {
    apiKey: "XXXXXXX",
    authDomain: "XXXXX",
    databaseURL: "XXXXX",
    projectId: "XXXXX",
    storageBucket: "XXXX",
    messagingSenderId: "XXXX"
};
firebase.initializeApp(config);

export default firebase;

Я бы импортировал firebase, где он:

import firebase from './dbConfig.js' 
let itemsRef = firebase.database().ref('/');
itemsRef.orderByChild('roundedBPM').equalTo('100').on('value', (snapshot) => {
  let data = snapshot.val();
  let item = Object.values(data);
  this.setState({item});
});

Примечание: OrderByChild элемент, который требуется для округленияBPMбыть прямым потомком для корневого пути '/', если это вложенный потомок, вы можете сделать что-то вроде этого:

let itemsRef = firebase.database().ref('/users');
itemsRef.orderByChild('roundedBPM').equalTo('100').on('value', (snapshot) => {
      ...
});

Примечание: если вы устанавливаете equalTo () roundedBPM, когда это число, а не строкаВы не получите никаких данных.Убедитесь, что вы используете правильный тип данных.

Надеюсь, это поможет!

...