Чтение определенного значения из базы Fire в React Native - PullRequest
0 голосов
/ 15 марта 2019

Попытка выполнить запрос типа SELECT для извлечения данных, но с использованием Firebase и React Native.

У меня есть следующая структура в моей базе данных Firebase:

{
  "items" : {
    "1234" : {
      "value1" : 420,
      "value2" : 69,
      "ProductID" : 1234
    },
    "5678" : {
      "value1" : 250,
      "value2" : 12,
      "ProductID" : 5678
    },
    "91011" : {
      "value1" : 9001,
      "value2" : 5,
      "ProductID" : 91011
    }
  }
}

Я использую следующеекод, чтобы попытаться получить конкретный идентификатор продукта

firebaseDB.ref("/items/")
    .orderByChild("ProductID")
    .equalTo(data)
    .once("value", snapshot => {
        if (snapshot.exists()){
            const userData = snapshot.val();
            console.log("INFO ::: Exists!", userData);
        }
        else {
            console.log("INFO ::: No match!!!");
        }

Теперь моя проблема в том, что я не могу выбрать данные.Я думаю, что это проблема с моим запросом, так как я передаю идентификатор 1234, и он не находит этот идентификатор продукта.

        .equalTo(data) <---- is how I'm passing the product id

Это то, что напечатано в моих журналах:

[11:43:19] [FIREBASE] p:0: Listen called for /items{"ep":"1234","i":"ProductID","sp":"1234"}
[11:43:19] [FIREBASE] p:0: Listen on /itemsfor {"ep":"1234","i":"ProductID","sp":"1234"}
[11:43:19] [FIREBASE] p:0: {"r":2,"a":"q","b":{"p":"/items","q":{"sp":"1234","ep":"1234","i":"ProductID"},"t":1,"h":""}}
[11:43:19] [FIREBASE] p:0: handleServerMessage d {"p":"items","d":{"1234":{"value1":420,"value2":69,"ProductID":1234},"5678":{"value1":250,"value2":12,"ProductID":5678},"91011":{"value1":9001,"value2":5,"ProductID":91011}}}
[11:43:19] [FIREBASE] event: /items:value:null
[11:43:19] [FIREBASE] p:0: Unlisten called for /items {"ep":"1234","i":"ProductID","sp":"1234"}
[11:43:19] [FIREBASE] p:0: Unlisten on /items for {"ep":"1234","i":"ProductID","sp":"1234"}

Возможно, мне следует попробовать изменить "значение", которое я передаю при вызове .once, но я не уверен .... Есть идеи?

Спасибо

Решенная проблема:

Мухаммед хорошо дал решение, которое позволило получить данные.Что я упускал из виду, так это то, что я использовал строку для запроса своих данных, а данные, которые я искал, были числом.

1 Ответ

0 голосов
/ 15 марта 2019

Вы можете попробовать это

const data = 1234;
firebase
  .database()
  .ref()
  .child('items')
  .orderByChild('ProductID')
  .equalTo(data)
  .once('value')
  .then(snapShot => {
    let matchingProducts = [];
    snapShot.forEach(child => {
      matchingProducts = [child.val(), ...matchingProducts];
    });
    console.log("matchingProducts",matchingProducts);
    return matchingProducts;
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...