Вот моя первая идея из того, что я понял.
Я экспортировал первую подписку в наблюдаемую и повторно использую ее для создания второй наблюдаемой (find$
), где я делаю вторую подписку.
Я не знаю, что делает query.greaterThanOrEqualTo('createdAt', result.createdAt)
, поэтому я положил это в оператор .do()
в качестве побочного эффекта. Если вам необходимо выполнить этот метод перед выполнением оставшегося кода, верните наблюдаемую информацию или обещание из нее, а также используйте mergeMap.
const dataQueryFirst$ = dateQuery.first();
const find$ = dataQueryFirst$
.do((result) => query.greaterThanOrEqualTo('createdAt', result.createdAt))
.mergeMap(result => {
const dateFormat = moment(result.createdAt).format('DD/MM/YYYY - HH:mm:ss');
return from(query.find())
.map(el => el.map((e) => {
return {
id: e.id,
username: e.get('username')
}}))
.mergeMap((array) => Observable.of({
names: array,
lastUpdate: dateFormat
}))
});
find$.subscribe(
(next) => res.send(serialize(next)),
(error) => res.send(serialize(error)),
() => console.log('completed')
);