在快速js中更新(PUT)数组

时间:2016-01-25 12:49:54

标签: javascript arrays node.js express

我正在使用expressjs(nodejs)。我正在尝试在更新现有数据(dealtype& dealprice)时存储数组数据,但无法这样做。

我现有的数据集

{
 "_id": "56a59a2923e047bc2128cd99",
 "foodImageUrl": "modules/foods/client/img/food.jpg",
 "deal": [
  {
   "_id": "56a59a2923e047bc2128cd9a",
   "dealprice": "asd",
   "dealtype": "asd"
  }
 ],
 "name": "ads",
 "created": "2016-01-25T03:44:41.346Z"
}

my expressjs controller

exports.update = function (req, res) {
var food = req.food;

  food.name = req.body.name;
  food.deal.dealtype = req.body.deal.dealtype;
  food.deal.dealprice = req.body.deal.dealprice;
  food.foodImageUrl = req.body.foodImageUrl;

  food.save(function (err) {
    if (err) {
      return res.status(400).send({
        message: errorHandler.getErrorMessage(err)
      });
    } else {
      res.json(food);
    }
  });
};

1 个答案:

答案 0 :(得分:0)

更新现有文档的一种方法。首先,找到需要通过_id或其他关键字更改的文档。这是_id的一个样本。

Food.findOne({_id: req.food._id}, function(err, food) {
  food.name = req.body.name;
  food.deal.dealtype = req.body.deal.dealtype;
  food.deal.dealprice = req.body.deal.dealprice;
  food.foodImageUrl = req.body.foodImageUrl;

  food.save(function (err) {
    if (err) {
      return res.status(400).send({
        message: errorHandler.getErrorMessage(err)
      });
    } else {
      res.json(food);
    }
  });
});

或者只需使用findOneAndUpdate更新现有文档。