如何使主键/ _id可选可以inputmongoose

我想让主键不需要input,但主键在mongodb中自动生成。 所以,我使用{type:ObjectId,required:false},但它不会工作,因为我让主键为空。 那么还有另外一种方法可以使主键可selectinput吗? 谢谢

restapi模型

var mongoose = require("mongoose"); var Schema = mongoose.Schema; var ObjectId = Schema.ObjectId var accessmenu = new Schema({ _id : {type : ObjectId,required: false}, acc_id : String, name : String, read : Boolean, execute : Boolean },{ collection: 'access_menu'}); var accessmenu = mongoose.model("accessmenu",accessmenu); module.exports.accessmenu = accessmenu; 

restapi

 app.put("/access_menu/:id",function(req,res){ var AccessMenu = new accessmenu({ _id : req.body._id, acc_id : req.body.acc_id, name : req.body.name, read : req.body.read, execute : req.body.execute }); AccessMenu.save(function(err){ if(err) { accessmenu.update({_id : req.params.id},{$set:{acc_id : req.body.acc_id, name : req.body.name, read : req.body.read, execute : req.body.execute }},function(err,users){ if(err) { data['error'] = 1; data['Access_Menu'] = "update faill"; res.json(data); } else { data['error'] = 0; data['Access_Menu'] = "update success"; res.json(data); } }); } else { data['error'] = 0; data['Access_Menu'] = "input success"; res.json(data); } }); }); 

的script.js

 if($scope.data_acc_lv.length > 0) { for(var i = 0;i<$scope.data_acc_lv.length;i++) { var input3 = { "_id" : $scope.data_acc_lv[i]._id, "acc_id":$scope.accLvID, "name": $scope.data_acc_lv[i].name, "read": $scope.data_acc_lv[i].read, "execute": $scope.data_acc_lv[i].execute } $http.put("http://localhost:22345/access_menu/" + $scope.data_acc_lv[i]._id,input3) .success(function(res,err){ if(res.error == 0) { $scope.data_acc_lv.length = 0; } else { console.log(err); } }); } } 

如果没有传递给Schema构造函数,Mongoose默认为每个模式分配一个_id字段。 分配的types是一个ObjectId,以符合MongoDB的默认行为。

如果您不想将_id添加到您的子模式中,则可以使用此选项将其禁用。

 // disabled _id var childSchema = new Schema({ name: String }, { _id: false }); var parentSchema = new Schema({ children: [childSchema] }); 

您只能在子文档上使用此选项。 Mongoose不能在不知道id的情况下保存文档,所以如果您尝试保存没有_id的文档,将会出现错误。

http://mongoosejs.com/docs/guide.html