Firestore 'get' запрос для всех документов в коллекции не возвращает никаких документов - PullRequest
0 голосов
/ 26 августа 2018

У меня есть этот код:

firebase.firestore().collection('items').get()
    .then(snapshot => {
      Alert.alert(JSON.stringify(snapshot._docs));
      snapshot.forEach(doc => {
        Alert.alert(doc.id, '=>', doc.data());
      });
    })
    .catch(err => {
      Alert.alert('Error getting documents', err);
    });

Alert.alert(JSON.stringify(snapshot._docs)) возвращает пустой массив - поэтому он не находит никаких документов.В этой коллекции есть один документ:

enter image description here

Это потому, что я использую адрес электронной почты для идентификатора документа?

ОБНОВЛЕНИЕ

Изображение, показывающее остальную часть структуры моей базы данных:

enter image description here

Я пытаюсь выполнить поискполя документа под PxlmyvjklhTOADngsSQg под userItems (и другие объекты, которые будут туда попадать).

ОБНОВЛЕНИЕ

По сути, это то, что я пытаюсь сделать, толькотеоретически я хотел бы использовать подстановочный знак для .doc(this.state.user.email):

firebase.firestore().collection('items').doc(**wildcard**).collection('userItems').where("barcode", "==", this.state.text)

Но я знаю, что это невозможно с firebase, поэтому я пытаюсь получить всеitems, а затем проанализировать их после успешного поиска.

1 Ответ

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

Прежде всего, вы получаете доступ к объекту снимка с помощью частных свойств:

snapshot._docs

Это неправильный способ сделать это.Снимок, который вы получаете по запросу, является объектом QuerySnapshot , и вы должны использовать документацию API, чтобы понять, как с ним работать.Если вы хотите получить массив документов из снимка, используйте его свойство docs.

Во-вторых, ваш скриншот фактически показывает, что в коллекции элементов нет документов.Обратите внимание, что документ, указанный по адресу электронной почты, выделен курсивом.Это означает, что на самом деле это не документ - это просто «фантомный» документ, который вы используете для организации подколлекции под ним с именем userItems.

Когда вы запрашиваете коллекцию, вы получаете только документы, которые сразув этой коллекции, и ни один из их подколлекций документов.Считается, что запросы «поверхностные» в этом смысле.Попробуйте создать фактический документ с полями непосредственно в items, затем запросите коллекцию.

...