Пример запроса Firebase возвращает бесполезный объект - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь получить пример из документации Firebase, используя запросы для работы, но, похоже, это не работает.Я использую облачное хранилище.

Вот результат, который я получаю: query result

var citiesRef = db.collection("cities");

citiesRef.doc("SF").set({
    name: "San Francisco", state: "CA", country: "USA",
    capital: false, population: 860000,
    regions: ["west_coast", "norcal"] });
citiesRef.doc("LA").set({
    name: "Los Angeles", state: "CA", country: "USA",
    capital: false, population: 3900000,
    regions: ["west_coast", "socal"] });
citiesRef.doc("DC").set({
    name: "Washington, D.C.", state: null, country: "USA",
    capital: true, population: 680000,
    regions: ["east_coast"] });
citiesRef.doc("TOK").set({
    name: "Tokyo", state: null, country: "Japan",
    capital: true, population: 9000000,
    regions: ["kanto", "honshu"] });
citiesRef.doc("BJ").set({
    name: "Beijing", state: null, country: "China",
    capital: true, population: 21500000,
    regions: ["jingjinji", "hebei"] });


// Create a reference to the cities collection
var citiesRef = db.collection("cities");

// Create a query against the collection.
var query = citiesRef.where("state", "==", "CA");

console.log(query);

Я ожидаю записи объекта, представляющего документ, который содержит указанное значение.Но результат всегда одинаков (см. Вложение), даже если я ищу несуществующее значение.Это почему?Я надеюсь, что кто-то может объяснить, что здесь происходит, и почему пример, приведенный в документации, не работает ...

1 Ответ

0 голосов
/ 09 февраля 2019

Это потому, что с помощью кода в вашем вопросе вы определяете (и console.log()) объект Query .

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

  • Вызовите метод get() для выполнения запроса и получения полученных документов (через QuerySnapshot);
  • Присоедините прослушиватель событий QuerySnapshot с помощью метода onSnapshot()

  • Или уточните этот запрос с помощью других методов, таких как where(), orderBy(), и т. Д. *

Вы найдете полную документацию здесь: https://firebase.google.com/docs/reference/js/firebase.firestore.Query

Итак, более конкретно, с вашим текущим кодом вы должнысделать что-то вроде:

var query = citiesRef.where("state", "==", "CA");

query.get()
  .then(snapshot => {
    if (!snapshot.empty) {
        snapshot.forEach(doc => {
          console.log(doc.id, '=>', doc.data());
        });
    } else {
        console.log('No document corresponding to the query');
    } 
  })
  .catch(err => {
     console.log('Error getting documents', err);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...