我有两个Collection模式,我想在另一个模式模式(FP)的数组字段中插入一个模式(FA)的一个Model实例:
var FASchema = new Schema({
Timestamp: Date,
PrognostizierterBetriebswert: Number,
posFlexPot: Number,
negFlexPot: Number,
Leistungsuntergrenze: Number,
Leistungsobergrenze: Number,
posGesEnergie: Number,
negGesEnergie: Number,
Preissignal: Number,
Dummy1: Schema.Types.Mixed,
Dummy2: Schema.Types.Mixed,
Dummy3: Schema.Types.Mixed
//same: Dummy: {}
});
module.exports = mongoose.model("FA", FASchema, 'FA');
和
var FPSchema = new Schema( {
_id: String, //mongoose.Schema.Types.ObjectId,
Demonstrator: Number,
erstellt: {type: Date, 'default': Date.now},
von: Date,
bis: Date,
Fahrplanabschnitte: { type: Schema.Types.ObjectId, ref: 'FA' },
})
module.exports = mongoose.model("FP", FPSchema, 'FP');
现在,每当我创建一个新的FA文档时,我都想将FA文档推入阵列中的FP集合中,并且#34; Fahrplanabschnitte"。无论是通过引用,还是通过模式/嵌套子文档......最好的方法是什么,我该怎么做?
我调用应该执行以下操作的POST方法:router.route('/FA/FPPUT/:FP_id').put(FAController.create_and_push_to_FP_by_ID)
该功能本身如下所示: 在第一步中,创建FA实例并将其保存在FA Collection中,然后更新FP集合并进入数组" Fahrplanabschnitte",应插入新的FA实例。但是,它没有按计划运行。
exports.create_and_push_to_FP_by_ID=function(req,res) {
console.log(req.body)
var fa = new FA(req.body);
//SAVE the new instance
fa.save(function(err) {
if (err) {
console.log(err);
res.status(400);
res.send(err);
}
else {
console.log("Instanz FA in Datenbank erzeugt!");
res.status(200);
res.json({ message: 'FA-Instance created in datbase!' })
}
});
FP.findOneAndUpdate({_id: req.params.FP_id}, function(err, fp) {
if (err){
res.send(fa);
}
//res.json(fp);
fp.Fahrplanabschnitte.push(fa._id);
})
};
我做错了什么?
答案 0 :(得分:1)
你这里出错了
`fp.Fahrplanabschnitte.push(fa._id); //does't make sense at all`
以上行不会对mongodb数据库执行任何操作或更新任何内容...
您需要使用
$push
运算符来更新中的集合 数据库
exports.create_and_push_to_FP_by_ID=function(req,res) {
console.log(req.body)
var fa = new FA(req.body);
//SAVE the new instance
fa.save(function(err, fa) {
if (err) {
console.log(err);
res.status(400);
res.send(err);
}
else {
console.log("Instanz FA in Datenbank erzeugt!");
FP.findOneAndUpdate({_id: req.params.FP_id}, { $push: {
Fahrplanabschnitte: fa._id } } function(err, fp) {
if (err){
return res.send(fa);
}
res.status(200);
res.json({ message: 'FA-Instance created in datbase!' })
})
}
});
};