我在node.js应用程序中使用mongoose.我不希望_id字段记录在案.我使用此代码保存我的记录没有_id字段.但它给出了错误
保存之前,文档必须具有_id
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var PlayerSchema = new Schema({
player_id : { type: Number },
player_name : { type: String },
player_age : { type: Number },
player_country : { type: String }
}
, { _id: false }
);
var Player = mongoose.model('Player', PlayerSchema );
var athlete = new Player();
athlete.player_id = 1;
athlete.player_name = "Vicks";
athlete.player_age = 20;
athlete.player_country = "UK";
athlete.save(function(err) {
if (err){
console.log("Error saving in PlayerSchema"+ err);
}
});
Run Code Online (Sandbox Code Playgroud)
我使用的是mongoose版本3.8.14
不幸的是,您不能跳过文档的主键,但您可以覆盖主键内容,您可以为每个文档定义自己的主键。
尝试以下相同的架构。
var PlayerSchema = new mongoose.Schema({
_id : { type: Number },
player_name : { type: String },
player_age : { type: Number },
player_country : { type: String },
Run Code Online (Sandbox Code Playgroud)
} );
我已将你的替换player_id为_id. 现在您可以控制文档的主键,系统不会为您生成密钥。
有一些插件也可以autoincremet为您的主键执行此操作。https://github.com/chevex-archived/mongoose-auto-increment。您也可以尝试这些。
另外,关于您收到的错误:任何文档都是一个对象,应该包装在内部,curly brackets您不能在同一文档中定义两个独立的对象。所以你会收到这个错误。