2016-10-12 5 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"} - 이것은 내가 혼란 스러워요

    { 
        "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 
        } 
    } 
    

    나는이 같은 설정을 가지고있는 11000 오류를

오류가 발생합니다 사용자인데 새로운 을 만들 때이 중복 키 오류가 발생합니다. 내가 무엇을 놓치고 잘못했는지 확신 할 수 없습니다. 감사합니다

+0

인덱스가있는 이전 컬렉션이 있다고 생각합니다. 컬렉션을 삭제하거나 인덱스'date_1'을 제거하는 것이 좋습니다. " .days index : date_1 dup key : {: null}"은'days' 속성이 null 인 다른 레코드를 삽입한다는 것을 의미합니다. – num8er

답변

6

나는 days_1 색인을 가지고 date 속성을 가진 모델이 있다고 생각합니다.

이제 컬렉션을 제거했지만 모음에는 여전히 해당 인덱스가 있습니다. 그것이 말하는 이유

그래서 그건 :

중복 키 오류 모음 : .days 지수 : DATE_1 DUP 키 : {: 널 (null)}

그것은 당신이 일 속성 다른 레코드를 삽입하고 의미 null도됩니다.

로그에서 콘솔에서 MongoDB를이 수행하려고합니다 :

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

추신을 귀하의 질문이나 의견에 추가 데이터를 제공하여 귀하의 문제를 해결할 수 있도록 도와주십시오.

+3

컬렉션에 많은 개발 시간 동안 오염 된 인덱스가있는 것처럼 보입니다. Robomongo를 사용하여 컬렉션을 삭제했지만 그 인덱스가 여전히 유지되는 것처럼 보입니다. 도움과 매우 명확한 대답에 감사드립니다. –

+0

@ 풀 - 하이브리드 행복 그게 도움이되었다 (; – num8er