我有一個控制器,基本上是執行一個遞回呼叫來檢索類別和他們洗掉的專案,但 "category_item "有一個名為 "next_steps "的屬性,這是一個類別陣列,所以我需要檢索這些類別和他們的專案。
所以我做了一個遞回函式,它起作用了,但是我需要在它真正結束時運行其他東西,我怎么做呢?
const recoveryCategory = async (req, res)=> {
try {
const categoryId = req.params.categoryId
const category = await nmCategorySvcV2.getByIdDeleted(categoryId)。
if (category === null) {
throw new Error("此類別未洗掉。")
}
__recoveryRecursive(categoryId)
//運行后的東西。
res.json({ success: true, message: "成功。" })
} catch (err){
res.json({ success: false, message: err.message })
}
}
const __recoveryRecursive = async (categoryId) => {
const category = await nmCategorySvcV2.getByIdDeleted(categoryId)
if (category === null){
return(category ===null)。
}
await nmCategorySvcV2.update(categoryId, { deleted: false })
const categoryItens = await categoryItemSvcV2.getAllItensByCategory(categoryId)
for (let i = 0; i < categoryItens.length; i ) {
const categoryItem = categoryItens[i].
if (categoryItem.deleted == true) {
const item = await itemSvcV2. getByIdNoPopulate(categoryItem.item, categoryItem.page)
if (item.deleted == true) {
itemSvcV2.update(item._id, { deleted: false })
categoryItemSvcV2.updateItensProp(item._id, { deleted: false })
}
const itemPrice = await itemPriceSvcV2.getById(categoryItem.price)
if (itemPrice.deleted == true) {
itemPriceSvcV2.updateObject({ _id: itemPrice._id }, { deleted: false })
}
categoryItemSvcV2.update(categoryItem._id, { deleted: false })
if (categoryItem.next_steps.length > 0){
for (let j = 0; j < categoryItem.next_steps.length; j ){
const categryNextStep = categoryItem.next_steps[j].category。
__recoveryRecursive(categryNextStep)
}
}
}
}
}
uj5u.com熱心網友回復:
只需在遞回呼叫前添加 await,因為它回傳一個必須處理的承諾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/319285.html
標籤:
上一篇:在瀏覽器中傳遞查詢字串的問題
下一篇:遞回查找并將其作為一個陣列加入
