Javascript Mongoose,在Mongoose.model(';core#u user';)之后强制更改模式。模式=新的Mongoose.schema(…)

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

我正在使用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 });
    }
  });
});

“somethingElse”是我试图强制执行的新字段,但没有强制执行它。我做错了什么?是否无法更新模型以使用新模式?

要更新Mongoose模式,您需要使用该方法。您可以使用以下代码更新模型的架构:

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

哇,这太棒了,就像一个魅力,有没有一个简单的方法来改变模式,并删除一个字段,如果需要的话?
mongoose.model('core_user').schema.add({ somethingElse: {
  type: 'String',
  required: true
}});