验证后恢复参数

recovering parameters after validation

本文关键字:参数 恢复 验证      更新时间:2023-09-26
  1. 我使用"router.get"来捕获所有与/user/read/:user_id 匹配的传入请求

  2. 在"router.param"中,我用属性名称和年龄定义了一个新对象"user"

  3. 然后在"router.get"中,我使用req.res.user.name恢复该用户对象,以将用户名作为响应发送回。

根据本教程,我应该能够使用req.user.name。但它不起作用,所以我使用了req.res.user.name

这是我的问题

我的"req"对象中的"res"对象是恢复用户的正确位置吗?换句话说,我错了还是教程错了?

// route middleware to validate :id
router.param('user_id', function(res, req, next, user_id) {
  // validation on id
  var user = {
    'name': 'Bob',
    'age' : '3'
  };
  req.user = user;
  next();
});
router.get('/user/read/:user_id', function(req, res) {
  res.send({'user' : req.res.user.name});
});

更新:

我使用的是快递4.10.x

您的想法是正确的,但回调中的args是向后的。

router.param('user_id', function(res, req, next, user_id) {

应该是

router.param('user_id', function(req, res, next, user_id) {

混淆的结果是,您将取出的用户对象设置在response对象上,而不是request对象上。