【问题标题】:Mongoose, enforce changes to schema after mongoose.model('core_user').schema = new mongoose.schema(...)Mongoose,在 mongoose.model('core_user').schema = new mongoose.schema(...) 之后强制更改模式
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

    • 哇,太棒了,就像一个魅力,有没有一种简单的方法来改变架构并在需要时删除一个字段?
    猜你喜欢
    • 2020-05-09
    • 1970-01-01
    • 2022-12-22
    • 1970-01-01
    • 2018-07-31
    • 2019-09-03
    • 2011-11-25
    • 2012-10-06
    • 2013-01-19
    相关资源
    最近更新 更多