У меня есть список категорий. Мне нужно посмотреть, если идентификаторы категории доступны в БД, если он затем вставить эти идентификаторы в другую таблицу
У меня есть два списка обещаний. то, что я хочу, это вызвать второй список обещаний после первой итерации итераций
// category ids as follows
let categoryIds = [['cat1','cat2', 'cat3'],['cat4','cat5', 'cat6']];
// insert promise
let insertCategoriesPromiseList = [];
// then iterate through the array and get categories from db
categoryIds.filter((categories) => {
let isCategoryAvailablePromises = [];
categories.filter((catId) => {
isCategoryAvailablePromises.push(checkForCategory(catId));
})
Promise.all(isCategoryAvailablePromises)
.then(data => {
// if all the cat ids are in the db then insert those cat ids
// into another table
insertCategoriesPromiseList.push(insertCatIds(data.cat1, data.cat2, data.cat3))
})
});
function checkForCategory(catId){
const promise = new Promise((resolve, reject)=> {
db.any('select categoryName from category where ...')
.then(data=>{
// if all the categories are available return
resolve(data);
})
.catch(e => {
reject(e);
})
})
return promise;
}
function insertCatIds(catId1, catId2, catId3){
const promise = new Promise((resolve, reject)=> {
db.one('insert into products ...')
.then(data=>{
// if all the categories are available return
resolve(data);
})
.catch(e => {
reject(e);
})
})
return promise;
}
Я хочу выполнить ниже после создания полной insertCategoriesPromiseList
, как я должен это сделать ...
Promise.all(insertCategoriesPromiseList)
.then(p => {
})
.catch()