NodeJS +猫鼬:保存一个模型并获取ID以在另一个模型中聚合
我需要你的帮助。这里是前提:
我有3种不同类别的产品目录。为了说明一个简单的例子,我有这个:
”并将其保存到特定的集合中,然后将其对应的“ _id”和main或submain聚合为一个阵列。这是代码的简化:The“ mains
”:”:
- 水果和蔬菜
- 肉类
- 鱼
“ Submains
来自main
“ 水果和蔬菜”我得到:”:
- 水果
- 蔬菜
然后是一堆“ 子类别
- 在主要“ 肉”内:牛肉,猪肉,家禽
- 在主要
“ 鱼”内:金枪鱼,鲑鱼- 在submain
“ Fruit”内:香蕉,西瓜- 在submain
内部“ 蔬菜”:胡萝卜,豌豆因此,我创建了一个三步函数,该函数首先采用“ 子类别
我的异步函数应该等待的函数在函数的最后执行。这意味着在执行其余函数时,我的addedSubCats和addedSubMains数组为空...const categories = { subMainCats: [{name: "fruit", ref: "4", family: "1"}, {name: "vegetables", ref: "5", family: "1"}], mainCats: [{name: "Fruits & Vegetables", ref: "1"}, {name: "meat", ref: "2"}, {name: "fish", ref: "3"}], subCats: [{name: "beef", fam: "2"}, {name: "pork", fam: "2"}, {name: "poultry", fam: "2"}, {name: "tuna", fam: "3"}, {name: "salmon", fam: "3"}, {name: "pork", fam: "5"}, {name: "peas", fam: "5"}, {name: "banana", fam: "4"}, {name: "watermelon", fam: "4"}] }; async function orderingDb(categories) { var subMains = categories.subMainCats; var mains = categories.mainCats; var subCats = categories.subCats; // Variables to recover info from elements that were added to db: var addedSubCats = []; var addedSubMains = []; // Step 1: saving the subcats await subCats.forEach(async (subCat, index) =>{ const name =subCat.name; const fam = subCat.fam; // Creating the mongoose model object const subcat = new Subcategory({ name: name, fam: main }); // Saving to the db and adding the _id to the array await subcat.save().then(res => { console.log('saving subcat!'); addedSubCats.push({ main: main, _id: res._id }); }).catch(err => console.log('ERROR: trying to save a subcat to mongo -- ', err)); }); // Step 2: Adding the subcats and saving the submains await subMains.forEach(async (subMain, index) => { const name = subMain.name; const fam = subMain.family; var subCats = []; // adding the subcats to the array addedSubCats.forEach((addedSubCat, index) =>{ if(addedSubCat.main === subMain.category.subFamily) { subCats.push(addedSubCat._id); addedSubCats.splice(index); } }); // Creating mongoose model object: const submain = new Submaincategory({ name: name, subCats: subCats, main: main }); // Saving and adding the _ids: await submain.save().then(res => { console.log('saving submain'); addedSubMains.push({ main: main, _id: res._id }) }).catch(err => console.log('ERROR: trying to save a Submain -- ', err )); }); // ... FINALLY I'VE GOT THE SAME LOGIC FOR STEP 3 FOR THE MAINS. }
这是我的问题:MODEL.save()
提前感谢!
我需要你的帮助。这里是前提:我有3种不同类别的产品目录。为了说明一个简单的例子,我得到了这个:“主要”:水果&...
回答如下:该问题的解决方案是在保存模型之前创建_id: