使用mongoose创建动态模式

时间:2014-03-29 04:23:52

标签: node.js mongodb mongoose

我对Node js和Mongoose模块非常陌生。我试图创建一个模式,其中有一些必需的字段,其他一些可以是动态的。

我已将strict用于false。我的代码如下所示:

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 个答案:

答案 0 :(得分:1)

来自猫鼬docs

  

注意:在您的实例中不存在的实例上设置的任何键/值   无论架构选项如何,都始终忽略架构。

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

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

您也可以将ad-hoc值放在mixed子文档类型下。