1
我正在使用Express-Restify-Mongoose庫爲REST API生成所有端點。Mongoose,在mongoose.model('core_user')後強制更改模式。schema = new mongoose.schema(...)
我將我的模式存儲在名爲'core_schema'的集合中。每次服務器啓動時,該集合中的所有記錄都使用find()方法獲取。這提供了具有定義模式的所有可用集合的數組。
db.on('open', function(){
findDocs('core_schema', {}, function(docs){
var tempString = JSON.stringify(docs);
var tempObj = JSON.parse(tempString);
for (var i = 0; i < tempObj.length; i++) {
var temp_schema = new mongoose.Schema(tempObj[i].schema_data, { collection: tempObj[i].collection_name });
var temp_model = mongoose.model(tempObj[i].collection_name, temp_schema);
restify.serve(router, temp_model, { plural: false, name: tempObj[i].collection_name, preCreate: setDateTimes });
}
});
});
我希望能夠更改架構來執行新的崗位的規則,但是當我嘗試使用類似的測試例子:
mongoose.model('core_user').schema = new mongoose.Schema({
update_count: { type: "String", required: false },
created_date: { type: "String", required: false },
created_by: { type: "String", required: false },
updated_date: { type: "String", required: false },
updated_by: { type: "String", required: false },
first_name: { type: "String", required: true },
last_name: { type: "String", required: true },
username: { type: "String", required: true },
password: { type: "String", required: true },
somethingElse: { type: "String", required: true }
}, {collection: 'core_user'})
其中「somethingElse」是新字段我試圖強制它不強制執行它。我究竟做錯了什麼?有沒有辦法更新模型以使用新的模式?
哇,多數民衆贊成真棒,就像一個魅力,有一種簡單的方法來改變模式,並如果需要的話刪除字段? –