2017-05-08 10 views
0

私はこのようなスキーマがあります。私は、新しいインスタンスを作成していた場合Mongooseモデルに記載されていないフィールドを追加することはできますか?例えば

let mongoose = require('mongoose'); 

let carSchema = new mongoose.Schema({ 
    url: String, 
    unique: {type: String, index: { unique: true }}, 
    number: String, 
    title: String, 
    price: String, 
}); 

module.exports = mongoose.model('Car', carSchema); 

はモデルでそれらを記述することなく、余分なフィールドを追加することが可能ですか?例:あなたはマングーススキーマは、その属性が存在するかどうかをチェック、しかし、あなたが行うことができますがありますすることはできませんので、

data.bpm = {foo: 'bar'} 

new CarModel(data).save(function (err) { 
    if (err) { 
     dd(err) 
    } 
}) 

答えて

0

、あなたがcarSchemaに次の属性を追加することができます。

externalData: Object

そしてそのデータをあなたが望むものにすることができます。

let mongoose = require('mongoose'); 

let carSchema = new mongoose.Schema({ 
    url: String, 
    ... 
    data: Schema.Types.Mixed 
}); 

をそして.dataの場としてのjsオブジェクトを使用します。

0

あなたのスキーマ内のいくつかのフィールドは「Schema.Types.Mixed」タイプを使用することができます。

1

strict: falseオプションを使用できます。

Documentation

(デフォルトで有効)strictオプションは、私たちのスキーマに指定されていなかった我々のモデルのコンストラクタに渡された値は、DBに保存されませんことを保証します。

更新されたスキーマは次のようになります。

let carSchema = new mongoose.Schema({ 
    url: String, 
    unique: {type: String, index: { unique: true }}, 
    number: String, 
    title: String, 
    price: String, 
}, { strict: false }); 
関連する問題