按 ID 查找文档并推送另一个子文档
Find document by ID and push another subdocument
我有两个集合模式,我想将一个模式 (FA) 的一个模型实例插入另一个模型模式 (FP) 的数组字段中:
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 文档推送到数组 "Fahrplanabschnitte" 内的我的 FP 集合中。通过参考,或通过 schema/nested 子文档...最好的方法是什么,我该怎么做?
我调用 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);
})
};
我做错了什么?
你这里错了
`fp.Fahrplanabschnitte.push(fa._id); //does't make sense at all`
以上行没有对 mongodb 数据库执行任何操作或更新任何内容...
you need to use $push
operator to update the collection in the
database
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!' })
})
}
});
};
我有两个集合模式,我想将一个模式 (FA) 的一个模型实例插入另一个模型模式 (FP) 的数组字段中:
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 文档推送到数组 "Fahrplanabschnitte" 内的我的 FP 集合中。通过参考,或通过 schema/nested 子文档...最好的方法是什么,我该怎么做?
我调用 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);
})
};
我做错了什么?
你这里错了
`fp.Fahrplanabschnitte.push(fa._id); //does't make sense at all`
以上行没有对 mongodb 数据库执行任何操作或更新任何内容...
you need to use
$push
operator to update the collection in the database
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!' })
})
}
});
};