Javascript Mongoose,在Mongoose.model(';core#u user';)之后强制更改模式。模式=新的Mongoose.schema(…)
我正在使用Express Restify Mongoose库为REST api生成所有端点 我将模式存储在一个名为“core_schema”的集合中。每次服务器启动时,都会使用find()方法捕获该集合中的所有记录。这将提供具有已定义架构的所有可用集合的数组Javascript Mongoose,在Mongoose.model(';core#u user';)之后强制更改模式。模式=新的Mongoose.schema(…),javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我正在使用Express Restify Mongoose库为REST api生成所有端点 我将模式存储在一个名为“core_schema”的集合中。每次服务器启动时,都会使用find()方法捕获该集合中的所有记录。这将提供具有已定义架构的所有可用集合的数组 db.on('open', function(){ findDocs('core_schema', {}, function(docs){ var tempString = JSON.stringify(docs); v
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 });
}
});
});
“somethingElse”是我试图强制执行的新字段,但没有强制执行它。我做错了什么?是否无法更新模型以使用新模式?要更新Mongoose模式,您需要使用该方法。您可以使用以下代码更新模型的架构:
mongoose.model('core_user').schema.add({ somethingElse: {
type: 'String',
required: true
}});
哇,这太棒了,就像一个魅力,有没有一个简单的方法来改变模式,并删除一个字段,如果需要的话?
mongoose.model('core_user').schema.add({ somethingElse: {
type: 'String',
required: true
}});