Mongoose,在mongoose.model('core_user')。schema。new mongoose.schema(…)后强制更改模式。

我正在使用Express-Restify-Mongoose库为REST api生成所有的端点。

我将我的模式存储在名为“core_schema”的集合中。 每次服务器启动时,使用find()方法抓取该集合中的所有logging。 这提供了具有定义模式的所有可用集合的数组。

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规则,但是当我尝试使用如下testing示例时:

 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'}) 

哪里“东西埃尔斯”是我试图执行它的新领域不强制执行它。 我究竟做错了什么? 有没有办法更新模型来使用新的模式?

要更新Mongoose模式,您需要使用Schema.add方法。 您可以使用下面的代码更新模型的模式:

 mongoose.model('core_user').schema.add({ somethingElse: { type: 'String', required: true }});