node.js - 如果 node.js 中的验证失败,如何保留表单数据?
问题描述
我正在尝试使用快速验证器验证表单数据。我在单独的文件中有路由和控制器。我想在验证失败后保留表单字段中的数据。我正在使用快速验证器进行验证。这是我写的一些代码
路由器.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 可以正常工作,并且验证可以正常工作,但我正在尝试保留表单字段的值。如果不像上面那样,我怎么能做到这一点?我也使用车把作为我的视图引擎。谢谢你。
解决方案
我认为传递表单名称:req.body.name 会自动设置值。我大错特错了。您还必须在车把文件中使用它 {{name}}。谢谢!!
推荐阅读
- java - 如何在java 8中将列表元素处理为单行中的另一个列表
- node.js - 回答一些安装 npm 模块的提示
- javascript - 如何禁用默认浏览器自动完成?
- java - 如果为空,则显示 imageview onclick 并在没有 imageview 的情况下发布
- c++ - 生成具有条件的给定字符串的排列
- c# - 如何使用实体框架调用接受 RefCursor 作为输出参数的 Oracle 存储过程
- algorithm - 当时间复杂度为 O(n!) 和 O(2^n) 时?
- javascript - 反应:我想在用户选择第三个选项时更新状态
- flutter - 使用 scoped_model 进行 API 调用的最佳实践
- azure-active-directory - 每次我尝试使用联合登录时都会出现“发生异常”