Tengo un controlador que básicamente realiza una llamada recursiva para recuperar las categorías y sus elementos eliminados, pero un "elemento_categoría" tiene una propiedad llamada "pasos_siguientes", que es una matriz de categorías, por lo que también necesito recuperar esas categorías y sus elementos. .
Así que hice una función recursiva, funciona, pero necesito ejecutar otra cosa cuando realmente termina, ¿cómo puedo hacer eso? aquí está mi código:
const recoveryCategory = async (req, res) => { try { const categoryId = req.params.categoryId const category = await nmCategorySvcV2.getByIdDeleted(categoryId) if (category === null){ throw new Error("This category is not deleted.") } __recoveryRecursive(categoryId) // run something after res.json({ success: true, message: "Success." }) } catch (err){ res.json({ success: false, message: err.message }) } } const __recoveryRecursive = async (categoryId) => { const category = await nmCategorySvcV2.getByIdDeleted(categoryId) if (category === null){ return } 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) } } } } }Simplemente agregue await antes de la llamada recursiva porque devuelve una promesa que debe manejarse.