2016-09-07 3 views
0

私のコレクションには以下のマングーススキーマが書かれています。しかし、マングーススキーマは、オブジェクトに挿入されているオブジェクトやアイテムのデータ型で厳密なチェックを実行していないようです。 ForExample:私は変更する場合mongodb insert()always successful

"activity_performed":真

に "activity_performed":データを挿入しながらのMongoDBにエラーを与えるものではありません

"adsfsadfを" 。私は間違って何をしていますか、データを挿入している間、どのように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が成功したと報告します

答えて

0

コードが完全ではないためです。私はあなたがマングースにスキーマを登録していないと推測しています。だから、モンゴースはあなたが強制したいルールがあることを知らない。また、初期化する必要があることに注意してください。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();