我正在尝试创建一个脚本,该脚本允许我从数据库API中删除项目,但这需要我对页面进行分页。我的问题是,在收到第一页(100个项目)后,如何继续调用删除功能。
我的代码看起来像这样,我知道它是不完整的,因为这就是我遇到的问题。每当我遍历100多个项目时,我需要将pageLeftOffSet
递增1,直到没有任何要遍历的内容products.meta.page.total
function deleteAllProducts() {
let pageLeftOffSet = 0;
Moltin.Products.Sort('created_at')
.Limit(100)
.Offset(pageLeftOffSet)
.All()
.then(products => {
while (products.meta.page.total > 0) {
products.data.forEach((prod, index) => {
if (index == 100) {
pageLeftOffSet++
} else {
Moltin.Products.Delete(prod.id)
.then(success => {}).catch(err => {
console.log(err)
})
}
})
}
})
}
deleteAllProducts()
答案 0 :(得分:0)
您可以通过传递当前的pageLeftOffset
+ 1来递归调用函数。
// take offset as param
function deleteAllProducts(pageLeftOffset) {
Moltin.Products.Sort('created_at')
.Limit(100)
.Offset(pageLeftOffSet)
.All()
.then(products => {
while (products.meta.page.total > 0) {
products.data.forEach((prod, index) => {
if (index == 100) {
// recursive call
deleteAllProducts(pageLeftOffset + 1);
} else {
Moltin.Products.Delete(prod.id)
.then(success => {}).catch(err => {
console.log(err)
})
}
})
}
})
}
// initial call with offset=0
deleteAllProducts(0);