Подозрительное добавление данных после вызова Firebase - PullRequest
1 голос
/ 28 мая 2020

Я борюсь с неопределенной проблемой и не могу понять, что может быть причиной root.

Я звоню в Firebase для получения данных, используя следующий код:

public getAllObject(filters: Filter[]): Observable<T[]> {
  return this.afs
    .collection('somecollection')
    .snapshotChanges()
    .pipe(
      take(1),
      map((changes) => {
        return changes.map((a) => {
          console.log(a.payload.doc.data()) ==============> displays everything is alright
          const data: any = a.payload.doc.data() as T;
          const code = a.payload.doc.id;
          return { code, ...data } as T;
        });
      })
    );
}

и я использую вышеуказанный сервис, упомянутый ниже:

this.service.getAllObject(this.service.getFilters()).subscribe(
  (entities) => {
    console.log(entities);==============> display's array and things are wrong.
  },
  (error) => {
    console.error(error);
  }
)

Описание проблемы

Когда я вызываю указанный выше API, я получаю массив следующих объектов. Проблема с атрибутом stores. По мере продвижения в массиве атрибут store содержит значения из pre-элементов. Это явление ПРОИСХОДИТ ТОЛЬКО НА СТОРОНЕ КЛИЕНТА.

Мне было интересно, использую ли я имя атрибута «store», которое представляет собой любое зарезервированное ключевое слово, которое вызывает это. Или я неправильно использую rx js.

Текущие результаты

{ 
  code: 123,
  stores: { abc }
},
{ 
  code: 345,
  stores: { def, abc }
},
{ 
  code: 678,
  stores: { xyz, def, abc }
},

Ожидаемые результаты

getAllObject console.log отображает следующее, что правильно

{ 
  code: 123,
  stores: { abc }
},
{ 
  code: 345,
  stores: { def }
},
{ 
  code: 678,
  stores: { xyz }
},

Текущий анализ

console.log(a.payload.doc.data());  ====> Showing correct
const data: any = a.payload.doc.data();
const code: string = a.payload.doc.id;
console.log({ code, ...data });
return { code, ...data } as T;      =====> Showing INCORRECT and adding stores from earlier element to current one.
...