My Code:
var mySchema = new Schema({
aktuell: {N7:String, Auftragsnr:String},
historie : [new Schema({
date: { type: Date, default: Date.now },
changed: {N7:String, Auftragsnr:String},
deleted: { type: Boolean, default: false }
}, {_id:false})]
}, { strict: false });
createIP = function(req, res) {
var ip = new IP ({
aktuell: req.body.aktuell,
historie: [
{
date: nowObj,
changed: req.body.aktuell
}
]
});
ip.save(function(err) {
if(err) {
res.send({status:err});
return;
} else {
res.send({ status: 'OK', ip:ip });
}
});
}
I expect it to create such entry in my DB:
{ _id: 54181fc0c5b9c1c7294ef510,
historie:
[ { deleted: false,
changed: [Object],
date: Tue Sep 16 2014 13:32:16 GMT+0200 (CEST)
} ],
aktuell: { Auftragsnr: '12', N7: '123132' } }
But in addition to above object literal an additional historie object gets created with its own ObjectId. This is why I used {_id:false} in my model. I also declared my array as new Schema as advised by the Mongoose Docs. I am out of knowlodge, I tried so much. How to get rid of this bug?
A console.log(ip) shows that indeed two object literals are passed by mongoose to mongoDD, one with an empty aktuell object, and one with a filled one. Also the changed object behaves strangely. What is going on here?
Im listening on port 9000
Connected to Database
POST - /ip/create
{ __v: 0,
_id: 54182c3bd9d529df6085f853,
historie:
[ { deleted: false,
changed: {},
date: Tue Sep 16 2014 14:25:31 GMT+0200 (CEST) } ],
aktuell: {} }
IP created
POST /ip/create/ 200 25.763 ms - 128
POST - /ip/create
{ __v: 0,
_id: 54182c3bd9d529df6085f854,
historie:
[ { deleted: false,
changed: [Object],
date: Tue Sep 16 2014 14:25:31 GMT+0200 (CEST) } ],
aktuell: { Auftragsnr: '14', N7: 'qweqw' } }
IP created
POST /ip/create/ 200 23.870 ms - 214