Я борюсь с неопределенной проблемой и не могу понять, что может быть причиной 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.