【问题标题】:mongodb insert() always successfulmongodb insert() 总是成功的
【发布时间】:2016-09-08 05:00:22
【问题描述】:

我为我的收藏编写了以下猫鼬模式。然而,猫鼬模式似乎并没有对插入到文档中的对象和项目的数据类型进行严格检查。例如:如果我改变了

“activity_performed”:真

"activity_performed":"adsfsadf"

mongodb 在插入数据时没有给出任何错误。我做错了什么,如何强制 mongoose 和 mongodb 在插入数据时进行严格的类型检查。

function initSchema() {
    activitySchema = mongoose.Schema({
        observationNumber : Number,
        observation_data : [{
            child_id : Number,
            child_observation_data : [{
                activity_performed: Boolean,
                observation_date: String,
                teacher_id: Number
            }]
        }]
    });
}

function insertData() {
    var activityModelObject = new ActivityModel();
    activityModelObject.observationNumber = 1593570;
    activityModelObject.observation_data = {"child_id" : 236, child_observation_data:{"activity_performed":"adsfsadf", "observation_date": "16May2016", "teacher_id":789}};

    activityModelObject.save(function(err, savedObject) {

        if(err) {
            console.error("error in saving to mongodb", err);
            return;
        }

        console.log("succesffully saveed the data: ", savedObject);
    });
}

日志:

successfully saved the data:  { observation_data: 
   [ { child_observation_data: [Object],
       _id: 57d07545b839132412da0755,
       child_id: 236 } ],
  _id: 57d07545b839132412da0754,
  observationNumber: 1593570,
  __v: 0 }

这应该失败了!但由于某种原因,mongodb 报告它成功

【问题讨论】:

    标签: node.js mongodb mongoose-schema


    【解决方案1】:

    因为代码不完整。我猜你还没有向 mongoose 注册模式。因此,猫鼬甚至不知道您要执行任何规则。还要注意需要初始化new mongoose.Schema()

    activitySchema = new mongoose.Schema({
            observationNumber : Number,
            observation_data : [{
                child_id : Number,
                child_observation_data : [{
                    activity_performed: Boolean,
                    observation_date: String,
                    teacher_id: Number
                }]
            }]
        });
    
    //registering schema to Activity_Model
    var Activity = mongoose.model("Activity_Model", activitySchema);
    
    var activityModelObject = new Activity();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      相关资源
      最近更新 更多