递归函数向嵌套数组添加数据后MongoDB未更新问题排查
问题:嵌套数组元素更新后MongoDB未同步,控制台输出正常
我尝试向包含多层嵌套数组的元素中添加数据,编写了递归函数以ID为依据遍历查找目标元素,添加新数据后控制台输出符合预期,但MongoDB中的数据并未更新,已无排查思路。
相关代码
import Folder from "../models/Folder"; import SubFolder from "../models/SubFolder"; import File from "../models/File"; export const createFolder = async (req, res) => { try { const { name, mainFolder, folderId } = req.body; if (!mainFolder && !folderId) { const newFolder = new Folder({ name, rute: "esto va a ser la ruta", files: [], subFolders: [], }); const folderSaved = await newFolder.save(); res.json({ message: "Carpeta creada", folder: folderSaved, }); } else { const newSubFolder = new SubFolder({ name, rute: "esto va a ser la ruta", mainFolder, files: [], subFolders: [], }); if (mainFolder === folderId) { const findMainFolder = await Folder.findOne({ _id: mainFolder }); findMainFolder.subFolders.push(newSubFolder); await findMainFolder.save(); res.json({ message: "Carpeta creada", folder: findMainFolder, }); } else { const findMainFolder = await Folder.findOne({ _id: mainFolder }); async function procesarSubCarpetas(folder) { for (const subFolder of folder.subFolders) { let subFolderId = subFolder._id; if (subFolder.subFolders.length > 0) { await procesarSubCarpetas(subFolder); } if (subFolderId.toString() === folderId) { subFolder.subFolders.push(newSubFolder); return; } } } await procesarSubCarpetas(findMainFolder); await findMainFolder.save(); res.json({ message: "Carpeta creada", folder: findMainFolder, }); } } } catch (error) { console.error("Error al crear la carpeta:", error); res.status(500).json({ error: "Error al crear la carpeta" }); } };
控制台返回结果(符合预期)
{ "message": "Carpeta creada", "folder": { "_id": "65b4cc91cf802c9ab1974106", "name": "Test1", "rute": "esto va a ser la ruta", "files": [], "subFolders": [ { "name": "Test1", "rute": "esto va a ser la ruta", "mainFolder": "65b4cc91cf802c9ab1974106", "files": [], "subFolders": [ { "name": "NewFile", "rute": "esto va a ser la ruta", "mainFolder": "65b4cc91cf802c9ab1974106", "files": [], "subFolders": [], "_id": "65b4cf2852b5e3e59f172003", "date": "2024-01-27T09:38:48.464Z" } ], "_id": "65b4cc9dcf802c9ab1974108", "date": "2024-01-27T09:27:57.790Z" } ], "date": "2024-01-27T09:27:45.667Z" } }
期望添加到SubFolders中的数据
{ "name": "NewFile", "rute": "esto va a ser la ruta", "mainFolder": "65b4cc91cf802c9ab1974106", "files": [], "subFolders": [], "_id": "65b4cf2852b5e3e59f172003", "date": "2024-01-27T09:38:48.464Z" }
内容的提问来源于stack exchange,提问作者SrPino23
相关产品推荐
相关产品推荐

