2014-03-29 106 views
4

我对Node js和Mongoose模块非常陌生。我试图创建一个模式,其中有一些必填字段,其他一些可以是动态的。我使用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 } 

在那里我做了错误。

回答

1

从猫鼬docs

注:任意键/ VAL在不你 模式存在的实例设置总是被忽略,不管模式选项。

创建模型实例时,您可以设置的值:

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

你也可以把临时值下mixed子文档类型以及。

+0

谢谢。但作为节点编程的新手,哪一个更适合选择?我想混合类型,我应该有一个关键,可以采取任何价值观。 – sriram

+1

它更像是一个商业逻辑和数据库模式问题,而不是一个猫鼬问题。除非问题是直接使用Mongoose还是MongoDB驱动程序,否则这不是特定的Node。 – WiredPrairie