2016-10-12 2 views
2

У меня есть модель, которая продолжает выходить из строя после первого POST. Я создаю приложение для планирования, которое представляет собой X дней, комнат и временных интервалов для комнат.Ошибка ошибки дубликата MongoDB E11000

Проблема, с которой я сталкиваюсь, заключается в создании Day Objects в базе данных. Ради удобства чтения я просто хочу, чтобы иметь единый ключ пары значений

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

Где я запуталась, у меня есть эта же установка для Пользователь, но когда речь заходит о создании нового Day, возникает эта повторяющаяся ошибка ключа. Не уверен, что мне не хватает или что-то не так. Спасибо

+0

Я думаю, что у вас есть старая коллекция с индексом, поэтому лучше удалить коллекцию или просто удалить индекс 'date_1'. потому что он говорит: « .days index: date_1 dup key: {: null}» означает, что вы вставляете другую запись, где атрибут 'days' имеет значение null. – num8er

ответ

6

Я думаю, у вас была модель с атрибутом date, который имел индекс days_1.

Теперь вы удалили его, но коллекция все еще имеет этот индекс.

так вот почему он говорит:

дубликата сбор ключ ошибка: .days индекс: дата_1 DUP ключ: {: нуль}

это означает, что Вы вставив еще одну запись, где атрибут дней также null.

журнал, чтобы MongoDB из консоли и попытаться сделать это:

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

P.S. заполните бесплатно, чтобы предоставить любые дополнительные данные в своем вопросе или в комментариях, чтобы помочь мне/нам решить вашу проблему.

+3

Похоже, в коллекции было множество индексов, которые загрязнились временем разработки. Я бросил коллекцию с Robomongo прямо перед этим, но, похоже, все еще сохранил эти индексы. Спасибо за помощь и очень четкий ответ. –

+0

@ Полноценный гибрид, который был полезным (; – num8er