我的代码:
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 });
}
});
}
我希望它能在我的数据库中创建这样的条目:
{ _id: 54181fc0c5b9c1c7294ef510,
historie:
[ { deleted: false,
changed: [Object],
date: Tue Sep 16 2014 13:32:16 GMT+0200 (CEST)
} ],
aktuell: { Auftragsnr: '12', N7: '123132' } }
但除了上面的对象文字之外,还会创建一个额外的historie
对象,并使用自己的ObjectId
。这就是我在模型中使用{_id:false}
的原因。我也根据Mongoose Docs的建议将我的阵列声明为新的Schema。我不知道,我尝试了很多。如何摆脱这个错误?
console.log(ip)显示确实有两个对象文字由mongoose传递给mongoDD,一个带有空aktuell
对象,另一个带有填充对象。此外,更改的对象行为异常。这是怎么回事?
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
答案 0 :(得分:1)
如果您不想在嵌套文档上使用id
并且不想在ip对象之外访问它们,则不需要为其创建另一个架构。新模式通常表示新集合及其引用。相反,只需将其嵌套:
var IpSchema = new Schema({
aktuell: {
N7: { type: String },
Auftragsnr: { type: String },
},
historie: [
{
_id: false,
date: { type: Date, default: Date.now },
changed: {
N7: { type: String },
Auftragsnr: { type: String },
},
deleted: { type: Boolean, default: false },
}
],
});
认为这也可以解决您的问题,请告诉我。