2017-05-08 27 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

你可以將這些數據設置爲任何你想要的。

0

您可以在您的模式使用類型「Schema.Types.Mixed」對一些領域:

let mongoose = require('mongoose'); 

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

然後使用。數據字段作爲JS對象。

1

您可以使用strict: false選項。

Documentation

嚴格的選項(默認啓用),確保傳遞給那些沒有在我們的架構中指定我們的模型構造函數值不會得到保存到數據庫。

將更新的模式將是這樣的:

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