У меня есть запрос, который может быть несколькими запросами, и каждый из них является наблюдаемым и использует .expand для рекурсивного просмотра каждой наблюдаемой и выполнения запроса.
Когда Count объекта равен> 1, мы выполняем запрос на публикацию и создаем объект obj, а если счетчик равен 0, мы удаляем только что созданный объект obj.Эта часть кода уже существует
Мне нужна помощь, чтобы сделать так, чтобы вместо удаления каждого объекта по его идентификатору я хотел поместить все идентификаторы в массив, а затем отправить массовый запрос на удаление с массивом.из id в качестве полезной нагрузки.
Я пытался использовать switchMap, но не уверен, нужно ли это делать за пределами .expand, или есть лучший метод для наблюдаемых, чтобы сделать это?
У меня естьметод для deleteById тоже.
В следующем существующем коде, не могли бы вы помочь с тем, как это нужно сделать
return new Promise((resolve, reject) => {
let temp = [];
let obj = {};
let queryIds = [];
this.restService.observable.post(CREATE, val).expand(response => {
obj = response.json();
if (obj && obj.Count > 0) {
return this.restService.observable.get(`${GET_NEXT}?id=${obj.id}`);
} else if (obj && obj.Count === 0) {
//returns an observable of each obj's id for delete request
//return this.restModuleService.observable.get(`${DELETE}?id=${obj.id}`);
//instead need to push the id's into an array
and make a delete request on teh array of ids
//queryIds.push(obj.id);
//return Observable.empty();
} else {
return Observable.empty();
}
})**.toArray().mergeMap(objects => {
const objArray = objects.map(obj => obj.json());
const toDelete = objArray.filter(obj => obj.remainingCount === 0);
return this.deleteByIds(toDelete);
})**.map(res => res.json()).subscribe(data => {
if (data) {
temp.push.apply(temp, data.results);
}
});
);
Метод deleteById
deleteByIds(queryIds, cb) {
var data = {
data: {
ids: []
}
};
for (var i = 0; i < queryIds.length; i++) {
data.data.ids.push(queryIds[i]);
}
let payload = JSON.stringify(data);
return this.restService.post('deleteBulk', payload)
.then(response => response.json())
.catch((error) => {
});
}