在父更新Mongoose上保存所有嵌套文档

时间:2017-07-20 02:56:27

标签: node.js mongodb mongoose

我的父模型如下所示:

var OrderSchema = new mongoose.Schema({
    serviceNotes: {type: mongoose.Schema.Types.ObjectId, ref: 'Service'},
    vehicle: {type: mongoose.Schema.Types.ObjectId, ref: 'Vehicle'}
});

孩子们看起来像这样:

var VehicleSchema = new mongoose.Schema({
    name: String
});

var ServiceSchema = new mongoose.Schema({
    baseCost: Number
});

我正在尝试找到一个简单的解决方案,一次更新所有这些文档。问题是,当我调用订单更新时,它不会更新嵌套文档。请参阅以下内容:

exports.updateOrder = function (req, res) {
  var order = req.body.order,
      update = {
        $set: order
      };

  Order.findOneAndUpdate({_id: order._id}, update, {new: true}, function (err, order) {
    if (err) handleError(res);
    if (!order) return res.status(404).send('Order not found.');
    return res.json({order: order});
  });
}

在这种情况下,req.body的示例可能如下所示:

{
    order: {
        _id: 829198218932shdbn,
        serviceNotes: {
            _id: 8932838nsd2sdnbd,
            baseCost: 1
        },
        vehicle: {
            _id: iu283823872378bd,
            name: 'Honda'
        }
    }
}

订单更新还应使用更新的信息更新serviceNotes,并使用更新的信息更新车辆。

我能够更新嵌套文档的唯一方法是在子项上调用findOneAndUpdate并逐个更新它们。我正在寻找一个解决方案,只需在父(订单)上调用更新,并让孩子也更新。

0 个答案:

没有答案