node js express,创建一个类并在不同的路由中使用

时间:2017-01-14 13:31:04

标签: javascript node.js mongodb express

我在项目的routes文件夹中创建apis,如何创建一个进行验证的类并在所有路径中使用它。 例如,如果路由创建了一个新用户,并且我希望我的验证类确保某个对象不是空的,而不是错误,不是未定义的非空。

例如,我想使用该类来验证它是否为空 我已经使用了快速验证器(req.assert),但我被要求换成一个班级。

如何在我的路线中使用其他类,如何在继续应用之前强制节点提取数据

   router.post('/add',function(req,res){
   var record = req.body.record,
    first_name = record.first_name,
    middle_name = record.middle_name,
    last_name = record.last_name,
    phone_number = record.phone_number;


     }) 

1 个答案:

答案 0 :(得分:0)

如果你正在使用Express,你可以创建一个中间件,然后在你的应用上use将其应用到你的所有路线:

中间件只是具有以下签名的函数:function(req, res, next){}。在您的情况下,您可以这样做:

function myMiddleware(req, res, next) {
  if (req.body.record)
    next()
  else
    res.status(400).json({message: "No record in your body"});  
}

Express提供的next功能可让您继续“转到下一个中​​间件或路由”。信息流如下:

request recieved by the route --> middleware1 --> middleware2 --> ... --> response

假设所有路由都由中间件组成,而res.jsonres.send的路由将是我们的最终路由',它将返回响应。

所以..在您的情况下,如果您想将此中间件应用于您的所有路线,您可以这样做:

app.use(myMiddleware)

或者,如果您只想在路线上使用它:

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

如果要将其应用于具有特定前缀的所有路线,请执行以下操作:

var router = express.Router()
router.use(myMiddleware)
app.use('/record', router)

希望它有所帮助, 欢呼声