2016-10-12 10 views
2

最初のPOSTの後にエラーが発生するモデルがあります。私は部屋のX日数、部屋のタイムスロット、そして部屋のタイムスロットであるスケジューリングアプリケーションを作成しています。私がいるMongoDB E11000重複キーエラー

問題は、データベース内のデーオブジェクトを作成しています。読みやすいのために私はちょうど

day.model.js

var mongoose = require('mongoose'); 

// Day Schema 
var daySchema = mongoose.Schema({ 
    name:{ 
    type: String, 
    required: true, 
    }, 
    createdAt:{ 
    type: Date, 
    default: Date.now 
    } 
}); 

var Day = module.exports = mongoose.model('Day', daySchema); 

// Get all Days 
module.exports.getDays = function(callback, limit){ 
    Day.find(callback).limit(); 
}; 

// Add Day 
module.exports.addDay = function(day, callback){ 
    var add = { 
    name: day.name, 
}; 
Day.create(add, callback); 
}; 

day.routes.js

var express  = require('express'); 
var router  = express.Router(); 
var jwt   = require('jsonwebtoken'); 
var config  = require('../config/database'); 

Day = require('../models/day.model.js'); 

// Get all Days 
router.get('/', function(req,res){ 
    Day.getDays(function(err, days){ 
    if(err){ 
     res.send(err); 
    } 
    res.json(days); 
    }); 
}); 

// Add Day 
router.post('/create', function(req,res){ 
    var day = req.body; 
    Day.addDay(day, function(err, day){ 
    if(err){ 
     res.send(err); 
    } 
    res.json(day); 
    }); 
}); 

module.exports = router; 

単一のキーと値のペアを持っているつもりです例JSON

  1. {"name": "Monday"} - これはうまく
  2. {"name": "Tuesday"}データベースに反映されます - これは私が混乱している11000エラー

エラー

{ 
    "code": 11000, 
    "index": 0, 
    "errmsg": "E11000 duplicate key error collection: <collection-name>.days index: date_1 dup key: { : null }", 
    "op": { 
    "name": "Tuesday", 
    "_id": "57fd89638039872dccb2230b", 
    "createdAt": "2016-10-12T00:52:51.702Z", 
    "__v": 0 
    } 
} 

が、私はこれと同じセットアップを持っているされてスローされますユーザーため、それは新しいを作ることになると、この重複キーエラーが発生します。私が行方不明または間違っていることを確認していない。おかげ

+0

私はあなたがインデックスを持つ古いコレクションを持っていると思うので、コレクションを削除するか、インデックス 'date_1'を削除する方がいいです。 " .days index:date_1 dup key:{:null}"は、 'days'属性がnullの別のレコードを挿入していることを意味します。 – num8er

答えて

6

は、私はあなたがdays_1インデックスを持っていたdate属性を持つモデルを持っていたと思います。

今コレクションを削除しましたが、コレクションにはまだそのインデックスがあります。それが言う理由

はそのためです:

重複キーエラーコレクション:.daysインデックス:DATE_1 DUPキー:{:ヌル}

それはあなたが日が属性別のレコードを挿入していることを意味またnullです。

コンソールからのMongoDB及びこれを実行しようとするには、ログイン:

db.collectionNameHere.getIndexes(); 
db.collectionNameHere.dropIndex('date_1'); 
db.collectionNameHere.getIndexes(); 

P.S.私の/あなたの問題を解決するためにあなたの質問やコメントに追加データを提供するために自由に記入してください。

+3

コレクションには、開発時に汚染されたインデックスの束がたくさんあるようです。 Robomongoでコレクションを削除していましたが、まだそれらのインデックスが残っているようです。ヘルプと非常に明確な答えをありがとう。 –

+0

@フルハイブリッドは幸せでした。 – num8er

関連する問題