2016-09-11 12 views
1

私たちはしばしば、この任意のデータを保存するためにMongoDBダイナミックスキーマ

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

var Account = new Schema({ 
    username: String, 
    password: String 
}); 

module.exports = mongoose.model('account', Account); 

のようなスキーマを定義し、我々はそれ以外何も働いていないスキーマに一致するオブジェクトに渡す必要があります。しかし、私は、ダイナミックな何かを節約したい、と私も例のためにそれらを、それが

{'name':'something',birthday:'1980-3-01'} 

またはその他何でも

{'car':'ferrari','color':'red','qty':1} 

することができますかわからないと言いますが、スキーマを設定するにはどうすればよいです?

+0

すばらしい質問 – sova

答えて

1

マングースにはMixedschema typeがあり、フィールドは任意のオブジェクトにすることができます。

var Account = new Schema({ 
    username: String, 
    password: String, 
    anyobject: Schema.Types.Mixed 
}); 
+0

これは、任意の種類のデータで3番目のプロパティを追加することが許可されているだけで、プロパティは動的で値は意味しません。値は私が文字列を行うことができます。 –

1

あなたはSchemaコンストラクタの2番目のパラメータとして、それを供給することにより、既存のスキーマ定義にstrict: falseオプションを使用することができます:あなたはまた、Mixedタイプ

を使用することができます

var AccountSchema = new Schema({ 
    Name : {type: String}, 
    Password : {type: String} 
}, {strict: false}); 

module.exports = mongoose.model('Account', AccountSchema); 

var TaskSchema = new Schema({ 
    Name : {type: String}, 
    Email : {type: String}, 
    Tasks : [Schema.Types.Mixed] 
}, {strict: false}); 

module.exports = mongoose.model('Task', TaskSchema); 
+0

strictをfalseに設定すると、なぜ名前と電子メールを定義する必要がありますか? –

関連する問題