У меня есть следующий RxJS combineLatest
, который ждет, пока три объекта не будут возвращены из моего хранилища Firebase (пользователь, исполнитель, релиз), который я объединяю и объединяю в массив объектов:
combineLatest([this.release$, this.artist$, this.auth.user$]).subscribe(
(results) => {
console.log(results)
this.releasePage = true;
var releaseArray = this.helper.flattenArray(results);
console.log(releaseArray);
}
)
Когда я загружаю эту страницу и console.log releaseArray
(в котором есть массив плоских объектов), я вижу все 3 объекта, как и ожидалось.
Теперь вот где возникает проблема.Пользователь может редактировать информацию release
, но когда пользователь сохраняет обновления, я получаю сообщение о том, что свойство в объекте выпуска не определено.И когда я просматриваю журнал для массива релизов, в новом releaseArray
возвращаются только объекты Artist и User.Почему объект release не возвращается и в этом массиве объектов?
Вот изображение, первые два оператора журнала находятся на загрузке страницы, а последние два оператора журнала отображаются, как только Firestore обновил данные, таким образомиспускание, так как значения изменились:
Когда я захожу в Firestore и напрямую обновляю свойство объекта, наблюдаемая возвращает 3 обновленных объекта, как и должно.
Для этого стоит мой код обновления Firestore AngularFire2, используемый для обновления объекта:
this.db.updateAt(`submissions/${this.submission.id}`, {
...form.value
})
И метод updateAt
в моей службе БД:
updateAt(path: string, data: Object): Promise<any> {
const segments = path.split('/').filter(v => v);
if (segments.length % 2) {
// Odd is always a collection
return this.afs.collection(path).add(data);
} else {
// Even is always document
return this.afs.doc(path).set(data, { merge: true });
}
}
Дайте мне знать, что еще вам нужно, чтобы помочь решить эту проблему, спасибо!