Как запросить документы, используя идентификаторы документов в AngularFire? - PullRequest
0 голосов
/ 26 января 2020

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

this.afs.collection<books>('books' , ref => ref.where( ref.id , 'in' , ['4L9uf4w5fqFXlU0uLbEM','bpXgEOmYqGor8uhUz2uq','tJFYPJcLMYNS8qnaUtMv'])).snapshotChanges().pipe(
            map(actions => {
            return actions.map( a => {
                const data = a.payload.doc.data();
                return {...data};
            });
        })
     );

afs имеет тип AngularFirestore

Я не знаю, если код выше является правильным.

Я попробовал решение, упомянутое по адресу: Запрос базы данных firestore для идентификатора документа , заменив ref.id на firebase.firestore.FieldPath.documentId (), но я получаю ошибку:

'firebase' относится к глобальному UMD, но текущий файл является модулем.

Помогите мне в получении данных.

Ответы [ 2 ]

2 голосов
/ 26 января 2020

Я мог бы решить эту проблему, заменив ref.id на firebase.firestore.FieldPath.documentId() и импортировав import * as firebase from 'firebase/app';

. Эту проблему также можно решить, импортировав import * as firebase from 'firebase';, но, как упоминалось @Stratubas в разделе комментариев над импортом выдает

предупреждение в консоли

Итак, рекомендуется использовать import * as firebase from 'firebase/app';

И наконец мой код выглядит так:

import * as firebase from 'firebase/app';

this.afs.collection<books>('books' , ref => ref.where( firebase.firestore.FieldPath.documentId() , 'in' , ['4L9uf4w5fqFXlU0uLbEM','bpXgEOmYqGor8uhUz2uq','tJFYPJcLMYNS8qnaUtMv'])).snapshotChanges().pipe(
            map(actions => {
            return actions.map( a => {
                const data = a.payload.doc.data();
                return {...data};
            });
        })
     );
0 голосов
/ 26 января 2020

В качестве альтернативы можно добавить строковое свойство id в ваши документы при их создании (сделать его равным действительному идентификатору документов) и использовать его для запросов.

...