我使用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'是我试图强制执行的新字段,它不会强制执行它。我究竟做错了什么?是否无法更新模型以使用新架构?
答案 0 :(得分:1)
要更新Mongoose架构,您需要使用Schema.add方法。您可以使用以下代码更新模型的架构:
screenOutput=$(screen -aA -x sctest)
screenOutput=${screenOutput%$'\r'}