我在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);
}
});
我使用的是mongoose版本3.8.14
3条答案
按热度按时间0ve6wy6x1#
遗憾的是,您不能跳过为文档设置主键,但可以覆盖主键内容,也可以为每个文档定义自己的主键。
请尝试以下架构以获取相同的。
});
我已经将您的
player_id
替换为_id
,现在您已经控制了文档的主键,系统不会为您生成主键。有一些插件也可以为你的主键做
autoincremet
。https://github.com/chevex-archived/mongoose-auto-increment。你可以试试这些。另外,关于您收到的错误:任何文档都是一个对象,应该被 Package 在
curly brackets
中,你不能在同一个文档中定义两个独立的对象。所以你会得到这个错误。tnkciper2#
复制Github类似问题评论中给出的答案:
_id
选项的存在是为了防止为文档中的每个子文档创建和指定一个。所以,它不是为了这个:
它是为了这个:
花了我一段时间,但在遇到同样的问题后,我在这里找到了文档。
i2byvkas3#
而不是写这个
写下:
因此
_id
将是players_id
然后进一步编写如下代码: