【问题标题】:How to Mongoose add Parent-Child Category(Nested) Node.JS如何猫鼬添加父子类别(嵌套)Node.JS
【发布时间】:2019-06-18 01:34:54
【问题描述】:

我想使用带有 Nodejs 的 mongoose 添加父子类别。正在添加数据。但是添加的子 ID 与父 ID 相同。如何将子 ID 设置为身份。你能帮帮我吗?

类别模型

var childSchema = new Schema({name:String,_id:{type:Schema.ObjectId}});
var categoryschema = new Schema({
 _id: { type: Schema.ObjectId, auto: true },
 name:  String,
 children: [childSchema]  
});

API

exports.addCategory = function(req,res){
var newCategory = new category(req.body);

 if(req.body._id==undefined){        
    newCategory.save((err)=>{
        if (err) return handleError(err);           
        res.send("insertad");
    });
}else{        
    req.body._id = Schema.ObjectId;
    category.findByIdAndUpdate(req.body._id,{ $set: { children:req.body } },{new: true},function(err, model){
        if(err)
        console.log("error",err);           
        res.send("update");
    });
  }

}

【问题讨论】:

    标签: node.js mongodb mongoose parent-child


    【解决方案1】:

    在您的代码category.findByIdAndUpdate(req.body._id,{ $set: { children:req.body } } 中,您正在使用相同的ObjectId 查找和更新文档。应该是这样的,

    { $set: { children: { "_id": mongoose.Types.ObjectId(), 'name': req.body.name } } }
    

    替代方案,

    只需从您的架构中删除_id,您将自动获得自动生成的ObjectId

    var childSchema = new Schema({name:String});
    

    【讨论】:

      猜你喜欢
      • 2016-06-08
      • 2015-09-21
      • 2022-01-25
      • 2021-06-07
      • 2021-03-23
      • 2020-06-04
      • 2019-03-22
      • 2018-06-23
      • 1970-01-01
      相关资源
      最近更新 更多