【发布时间】:2016-05-14 20:18:44
【问题描述】:
我正在使用 Express-Restify-Mongoose 库为 REST api 生成我的所有端点。
我将我的模式存储在名为“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 });
}
});
});
我希望能够对架构进行更改以强制执行新的 POST 规则,但是当我尝试使用如下测试示例时:
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”是我试图强制执行的新字段,但它不会强制执行。我究竟做错了什么?有没有办法更新模型以使用新架构?
【问题讨论】:
标签: javascript node.js mongodb mongoose