I have a model that keeps erroring out after the first POST. I'm creating a scheduling application, which is X number of days, with rooms, and time slots for the rooms.
The issue I'm having is creating Day Objects in the database. For sake of easy reading I'm just going to have a single key value pair
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;
Example JSON
{"name": "Monday"}
- this will reflect in the Database just fine{"name": "Tuesday"}
- this will throw an 11000 errorError
{
"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
}
}
Where I'm confused is I have this same setup for a User but when it comes to making a new Day, this duplicate key error arises. Not sure what I'm missing or doing wrong. Thanks
I think You had model for days
collection with date
attribute which had unique index date_1
.
Now You've removed it but collection still has that index.
so that's why it says:
duplicate key error collection: .days index: date_1 dup key: { : null }
it means You're inserting another record where date
attribute is also null.
log in to mongodb from console and try to do this:
db.collectionNameHere.getIndexes();
db.collectionNameHere.dropIndex('date_1');
db.collectionNameHere.getIndexes();
p.s. feel free to provide any additional data in Your question or in comments, to help me/us to solve Your issue.