使用mongoose创builddynamic模式

我是Node js和Mongoose模块的新手。 我试图创build一个模式,其中有一些必填字段,其他一些可以是dynamic的。

我用strictfalse 。 我的代码如下所示:

 var mongoose = require('mongoose') var db = mongoose.connect('mongodb://localhost/ets',function(err) { if(err) throw err }) var Schema = mongoose.Schema var Tasks = new Schema({vmProfile:String}, { strict: false }); mongoose.model('Task',Tasks) var Task = mongoose.model('Task') var task = new Task() task.vmProfile = "required value" task.otherKey = "something" task.save(function(err) { if(err) throw err; }) 

当我运行这个,我只得到vmProfile保存,而不是otherKey ,数据库看起来像这样:

 { "vmProfile" : "required value", "_id" : ObjectId("53364a5a5cd71a76122f0a8a"), "__v" : 0 } 

我犯了错误

从mongoose文档 :

注意:无论架构选项如何,您的架构中不存在的实例上的任何键/ val集都会被忽略。

您可以在创build模型实例时设置该值:

 var task = new Task({'otherKey', 'some value'}); 

您也可以将ad-hoc值置于混合子文档types下。