所以我有一个包含多个输入的表单,表单在服务器上创建一个post请求。我需要在html中使用特定的输入来将值推送到存储在模式中的数组中。我理解请求属于特定路由,并且所有输入都作为一个路由对此路由做出反应,是否有办法在不为每个输入创建新的路由路由的情况下将其分解。 rateEmployee函数是导出对象的一部分。
.def

rateEmployee: function(req, res){
var employeeId = req.params.id
Employees.findByIdAndUpdate(employeeId, {$push: {ratings: 1}}, {new: true}, (err, update) => {
if(err){
console.log(err)
}
else {
console.log(update)
res.redirect('/employers/view/' + req.user.id)
}

答案 0 :(得分:0)
Express的路由器是绑定到特定路由的中间件。您可以将多个中间件绑定到同一路由。
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
const express = require('express');
const router = express.Router();
router.post('/post1', (req, res,next) => {
let body=req.body;
let rate = body.rate;
next();
});
router.post('/post1', (req, res) => {
res.json({status: 'success'});
});
如果您通过调用next()
传递控件,将按顺序调用它们。
如果您决定打破链条,则可以随时返回响应res.json({//response});
。
所以你的表格可以传递任意的不。对同一路由的输入但你的中间件绑定到该路由必须有逻辑来决定谁有责任处理传入的请求。要访问您的表单数据,首先注册一个正确的解析器(Json / url编码),然后您的表单中发布的数据将在您的req.body中提供。此数据将可用于您通过的所有中间件。
编辑:添加正文解析器并改进示例