Mongoose - 从现有数据库数据创建模型

时间:2013-12-22 00:54:43

标签: node.js mongodb mongoose

使用Mongoose,我有一个以前从数据库中提取的文档,带有_id属性,原始Object格式(IE,没有所有文档方法,只是直接来自分贝)。

如果系统没有为新模型mongoose.Model分配模型,如何使用该数据创建_id实例?我想最终保存该模型并让它更新数据库中的现有文档。


更新:使用@Jack Newcombe方法的组合,然后将model.isNew设置为false,我收到以下错误:“不允许修改_id”。所以现在它知道要更新,但是Mongoose没有从更新请求中删除_id字段。 Model上必须有一个系统属性告诉Mongoose是否在更新请求期间删除_id。有什么想法吗?

2 个答案:

答案 0 :(得分:-1)

您可以通过传入将_id设置为false的选项来阻止模型的架构自动生成_id:

var schema = new Schema({name:String},{_ id:false});

来源:http://mongoosejs.com/docs/guide.html#_id

答案 1 :(得分:-1)

我已经明白了,但我确信有更好的方法。我很惊讶没有办法用Mongoose的API轻松完成这项工作。

无论如何,您需要以下内容:

  1. 创建如下模型:var model = new Model(data, {_id:false});
  2. 手动将model.isNew设置为false
  3. 手动告诉Mongoose _id字段未被修改,如下所示:delete model.$__.activePaths.states.modify._id
  4. 我不喜欢这个的原因是因为我利用了JavaScript没有真正的受保护方法的事实,而且我基本上是在攻击Mongoose以使其工作。所以,如果有人,我很乐意听到其他答案。