【问题标题】:updating(PUT) array in express jsExpress js中的更新(PUT)数组
【发布时间】:2016-01-25 21:19:16
【问题描述】:

我正在使用 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"
}

我的 expressjs 控制器

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);
    }
  });
};

【问题讨论】:

  • 您的代码中是否使用了mongoose
  • 是的,使用了猫鼬
  • 只更新现有文档的交易类型和交易价格?还是创建一个新文档?
  • 我想更新现有文档

标签: javascript arrays node.js express


【解决方案1】:

一种更新现有文档的方法。首先,通过_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 来更新现有文档。

【讨论】:

  • 它在控制台中显示Error: [$resource:badcfg] Error in resource configuration for action update. Expected response to contain an array but got an object
  • 我在前端使用 angularjs food.deal.dealtype = req.body.deal.dealtype; 这会获取 ng-repeat 数据吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-08
  • 2015-06-12
  • 2014-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多