我正在尝试使用快速验证器验证表单数据。我在单独的文件中有路由和控制器。我想在验证失败后保留表单字段中的数据。我正在使用快速验证器进行验证。这是我写的一些代码
路由器.js
const express = require('express');
const router = express.Router();
const adminController = require('../controllers/adminController');
const { check } = require('express-validator');
router.all('/*',(req,res,next) => {
req.app.locals.layout = 'admin';
next();
});
router.route('/')
.get(adminController.index);
router.route('/news-upload')
.get(adminController.getNews)
.post([check('title', 'Title cannot be empty').not().isEmpty(),
check('description', 'Content cannot be empty!').not().isEmpty()],
adminController.submitNews);
module.exports = router;
控制器.js
submitNews: (req, res) => {
let error = validationResult(req);
if (!error.isEmpty()) {
res.render('admin/news', {
title: req.body.title,
description: req.body.description,
error_message: error.errors[0].msg
});
}
else {----
}
新闻.车把
<div class = "container">
<h1>Create New Post</h1>
<div class="row p-4">
<div class="col-md-10">
<form action="/admin/news-upload" method="post">
<div class="form-group">
<lebel for="title">Title</lebel>
<input type="text" class="form-control" name="title" id="title"
placeholder="Enter The Title">
</div>
<div class="form-group">
<label for="description">Content</label>
<textarea name="description" id="description" class="form-
control" placeholder="Enter your content here" rows="10"></textarea>
</div>
<button class="btn btn-outline-success btn-lg" type="submit">Create
Post</button>
</form>
</div>
</div>
</div>
我正在使用 connect-flash 来显示消息。在这里你可以看到
title: req.body.title
description: req.body.description
error_message: error.errors[0].msg
我正在尝试获取表单值并通过 res.render 将其发送回,但这不起作用。我收到了 Flash 消息,这意味着 error_message: error.errors[0].msg 可以正常工作,并且验证可以正常工作,但我正在尝试保留表单字段的值。如果不像上面那样,我怎么能做到这一点?我也使用车把作为我的视图引擎。谢谢你。