在路由Express,Nodejs中调用多个模块

时间:2018-02-25 13:19:33

标签: node.js mongodb express

这是我第一次创建API。我尝试删除一次用户项目,删除了该用户。我能够删除用户,但我没有成功删除这些项目。

user.js的

express = require('express');
User = require('./user');
Item = require('../item');
router = express.Router();

User.findByIdAndRemove(req.params.id, function(err, user) {
  if (err) {
    return res.status(500).send('User not found by id.');
  }
  Item.deleteMany(user._id, function(err, item) {
    if (err) {
      return res.status(500).send('Item is not found');
    }
    return res.status(200).send(user, item);
  });
});

有没有办法实现这个目标?因为我觉得我做错了。

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来你没有定义实际路线 - 你需要

router.route('/').post(function(req, res){ ... });

您还应该包含正文解析器以从请求中获取参数

var bodyParser = require('body-parser');
app.use(bodyParser.json());
var parseUrlencoded = bodyParser.urlencoded({extended: false});

您对User方法的代码看起来更像下面的块。你可以改变' /'您希望api响应的URL路径,并可以将代码从.post更改为.delete,具体取决于您要响应的方法

route.route('/')
  .post(parseUrlencoded, function(req, res) {
    // code to respond to 'post' methods
    if (!req.params.id) {
      return res.send('id not sent')
    }

    User.findByIdAndRemove(req.params.id, function(err, user) {
      if (err) {
        return res.status(500).send('User not found by id.');
      }
      Item.deleteMany(user._id, function(err, item) {
        if (err) {
          return res.status(500).send('Item is not found');
        }
        return res.status(200).send(user, item);
      });
    });
  })
  .delete(parseUrlencoded, function(req, res) {
    // code to respond to 'delete' method
  })