RESTful API奇异路由,具有单个对象以进行检索和更新(选项参数)

时间:2016-10-19 16:21:13

标签: node.js mongodb rest express mongoose

您好我试图在Express中的RESTful API服务器中创建路由。

我已经配置了其他路由,现在我需要配置('/options)('/profile')单一路由,其中​​只有一个对象可以进行检索和更新。

基本上我需要对json-server module部分中的Singular routes执行相同操作。

因此,当我访问/options端点时,我获得了具有此架构的预定义对象

{
  tax: Number,
  inps: Number,
  ritenuta: Number,
  banca: {
    nome: String,
    iban: String
  }
}

要更新。

这是/options的实际路线:

var Option = require('../models/option');
var express = require('express');
var router = express.Router();

router.route('/options')
  .get(function(req, res) {
    Option.find(function(err, options) {
      if (err) {
        return res.send(err);
      }

      res.json(options);
    });
  })
  .post(function(req, res) {
    var option = new Option(req.body);

    option.save(function(err) {
      if (err) {
        return res.send(err);
      }

      res.send({message: 'Option Added'});
    });
  });

// Save an option
router.route('/options/:id').put(function(req, res) {
  Option.findOne({ _id: req.params.id}, function(err, option) {
    if (err) {
      return res.send(err);
    }

    for (prop in req.body) {
      option[prop] = req.body[prop];
    }

    option.save(function(err) {
      if (error) {
        return res.send(err);
      }

      res.json({message: 'Option updated!'})
    });
  });
});

// Retrive an option
router.route('/options/:id').get(function(req, res) {
  Option.findOne({ _id: req.params.id }, function(err, option) {
    if (err) {
      return res.send(error);
    }

    res.json(option);
  });
});

// Delete an option
router.route('/options/:id').delete(function(req, res) {
  Option.remove({ _id: req.params.id}, function(err, option) {
    if (err) {
      return res.send(err);
    }

    res.json({message: 'Option deleted!'});
  });
});

module.exports = router;

但它很复杂。它应该更简单。实际上,在这种情况下,我需要获取所有选项,获取options[0]的id并使用id作为params进行调用以检索对象并进行更新。

有什么建议吗?

0 个答案:

没有答案