Мы используем Firestore в приложении Ionic в сочетании с AngularFire и собственным плагином Ionic Firestore.
Мы разработали библиотеку, которая объявляет класс DAO со следующим кодом:
@Injectable()
export abstract class AbstractDao<M extends AbstractModel> {
constructor(private db: AngularFirestore) {
}
...
/**
* @inheritDoc
*/
public getList(collectionPath: string): Observable<Array<M>> {
return this.db.collection<M>(collectionPath)
.snapshotChanges()
.map(actions => actions.map(doc => this.getNewModelFromDb(doc.payload.doc, collectionPath)));
}
}
Этот метод иногда вызывается для канала first () следующим образом:
this.referentialCityDao.getList('referentialCities').pipe(first())
.subscribe((cities) => {
...
});
Раньше это работало просто отлично, но в течение последних нескольких дней метод случайным образом возвращает пустой список при первом вызове, давая нам правильные результаты, найденные в базе данных только по второму триггеру в подписке, и, таким образом, делая первый () трубный вызов ошибочный.
Мы обновили все, но проблема по-прежнему возникает регулярно.