Я новичок в RxJS.Я использую его в одном из моих приложений Angular.Я хотел бы добиться следующего.Для заданного набора user_ids: ex [1, 2, 3], (i) получить данные о пользователе из базы данных, как только я получу данные о пользователе, тогда я хотел бы получить данные о user_reservation из другой таблицы базы данных (ii)подписаться и освободить подписку в методе ngOnDestroy ().
Вот что я попробовал ...
let user_ids= [1,2,3];
user_ids.forEach
((id) =>
{
this.subscription = this.http.get(`https://someUrl/api/userdetails/${id}`)
.pipe(
map((x:any) => x.id),
concatMap(userid =>
this.http.get(`https://someUrl/api/reservationDetails?
userId=${userid}`)),
take(2)
).subscribe();
})
ngOnDestroy(): void {
if(this.subscription) {
this.subscription.unsubscribe();
this.subscription = null;
}
}
Это дает мне результат, но когда я хочу ограничить детали бронирования (Я хочу взять только первые две детали бронирования), (i) он не работает, вместо этого он возвращает все детали резервирования данного идентификатора пользователя.(ii) Я объявляю подписку (this.subscription) внутри цикла forEach ().Это будет иметь какие-либо побочные эффекты?потому что одна и та же подписка инициализируется повторно.Любое руководство приветствуется.
Редактировать: Как JGFMK, попросил меня предоставить больше информации о работе базы данных.Я обновляю свой пост.Я использую SQL Server в качестве бэкэнда.Но я не ограничиваю строку из запроса на стороне сервера.Я просто хотел бы получить два случайных (строки) результата, я думал, что RxJS take (2) ограничит результаты, взяв только две строки.(Прошу вас поправить меня, если я ошибаюсь).