使用Mongoose,我有一个以前从数据库中提取的文档,带有_id
属性,原始Object
格式(IE,没有所有文档方法,只是直接来自分贝)。
如果系统没有为新模型mongoose.Model
分配模型,如何使用该数据创建_id
实例?我想最终保存该模型并让它更新数据库中的现有文档。
更新:使用@Jack Newcombe方法的组合,然后将model.isNew
设置为false
,我收到以下错误:“不允许修改_id”。所以现在它知道要更新,但是Mongoose没有从更新请求中删除_id
字段。 Model上必须有一个系统属性告诉Mongoose是否在更新请求期间删除_id
。有什么想法吗?
答案 0 :(得分:-1)
您可以通过传入将_id设置为false的选项来阻止模型的架构自动生成_id:
var schema = new Schema({name:String},{_ id:false});
答案 1 :(得分:-1)
我已经明白了,但我确信有更好的方法。我很惊讶没有办法用Mongoose的API轻松完成这项工作。
无论如何,您需要以下内容:
var model = new Model(data,
{_id:false});
model.isNew
设置为false
_id
字段未被修改,如下所示:delete model.$__.activePaths.states.modify._id
我不喜欢这个的原因是因为我利用了JavaScript没有真正的受保护方法的事实,而且我基本上是在攻击Mongoose以使其工作。所以,如果有人,我很乐意听到其他答案。