Запрос AngularFire2 не возвращает идентификатор документа

Я использую AngularFire2 в службе для получения данных из коллекции Firestore. Код выглядит примерно так:

this.db.collection('organizations')
  .valueChanges()
  .pipe(first())
  .toPromise()
  .next(organization => console.info(organization));

Консоль регистрирует объект организации точно так, как ожидалось. Но в этом объекте отсутствует идентификатор документа Firestore.

Поэтому мне интересно, можно ли что-то сделать, чтобы получить идентификатор как часть этого запроса...

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

вы можете использовать снимок примерно так:

private getOrganizations(whereClause: any): any {
        return this.db.collection('organizations')
            .snapshotChanges()
            .pipe(
                map((docs: any) => {
                    return docs.map(a => {
                        const data = a.payload.doc.data();
                        const id = a.payload.doc.id;
                        return {id, ...data};
                    });
                })
            );
    }

Для получения более подробной информации о snapshotChanges проверьте это:

https://github.com/angular/angularfire2/blob/master/docs/firestore/documents.md#snapshotchanges

snapshotChanges()

What is it? - Returns an Observable of data as a DocumentChangeAction.

Why would you use it? - When you need the document data but also want to keep around metadata. This metadata provides you the underyling DocumentReference and document id. Having the document's id around makes it easier to use data manipulation methods. This method gives you more horsepower with other Angular integrations such as ngrx, forms, and animations due to the type property. The type property on each DocumentChangeAction is useful for ngrx reducers, form states, and animation states.What is it? - Returns an Observable of data as a

Спасибо Надир, похоже на то!

David Haddad 14.03.2019 19:50

Другие вопросы по теме