1

使用当前版本的 MassiveJS 和 express 进行 API 调用。使用 SAVE 函数时,Massive 希望列名列表更新如下:

router.put('/:id', function(req, res, next) {
  db.suppliers.save(
    {
      id: +req.params.id,
      name: req.body.name,
      email: req.body.email,
      column1: req.body.column1,
      column2: req.body.column2,
      column3: req.body.column3,
      manyOtherColumns: req.body.manyOtherColumns,
      etc...
    }, function (err, result) {
      if (err) {
        return next(err);
      }
      return res.status(200).json({
        status: 'SUCCESS',
        message: 'Supplier has been saved'
      });
    })
});

如您所见,随着列列表越来越长,这段代码变得越来越难以维护。所以我想知道是否有一种方法可以在单个调用中保存整个 req.body 假设 req.body 键值与 db 列名匹配。这将节省大量时间并且更易于维护。

4

1 回答 1

2

Massive 不是 ORM,因此保存“对象”不是想法。如果要更新某些内容,可以直接使用db.update并传入要更新的值以及行的 id。这将为您进行部分更新。

正如我在评论中提到的那样,打开一个 REST 端点来更新用户通过 POST 发送的任何内容可能不是一个好主意,即使您确实信任您的用户。

最后:如果您只想传递表单帖子,您可以:

router.put('/:id', function(req, res, next) {
  var supplier = {
    id: req.params.id;
  };
  supplier = _.extend(supplier, req.params.body);
  db.suppliers.save(
    supplier
    , function (err, result) {
      if (err) {
        return next(err);
      }
      return res.status(200).json({
        status: 'SUCCESS',
        message: 'Supplier has been saved'
      });
    })
});
于 2016-07-11T22:15:27.643 回答