2014-03-29 102 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