javascript - 为什么我在 UI 中没有收到验证 Flash 消息,我收到类似这样的 Flash 错误 [object Object],[object Object],[object Object]
问题描述
我正在开发 NodeJs 应用程序,它是博客应用程序。我使用了 express Validator,我试图在将帖子保存在数据库中之前使用 flash 消息验证数据,并在 UI 端使用 express flash 消息,我成功地将数据保存在数据库中,但在提交表单后消息没有出现在 UI 端我收到这样的 flash 错误[object Object],[object Object],[object Object]
我正在使用哈巴狗模板引擎。
应用程序.js
const express = require("express");
const path = require("path");
const app = express();
const mongoose = require("mongoose");
const Article = require("./models/article");
const bodyParser = require("body-parser");
const { check, validationResult } = require("express-validator");
const flash = require("connect-flash");
const session = require("express-session");
//Express Session Middleware
app.use(
session({
secret: "keyboard cat",
resave: true,
saveUninitialized: true
})
);
app.use(flash());
app.use((req, res, next) => {
res.locals.errors = req.flash("error");
res.locals.successes = req.flash("success");
next();
});
app.get("/articles/add", (req, res) => {
res.render("add_articles", {
title: "Add Articles"
});
});
// Add Submit POST Route
app.post(
"/articles/add",
[
check("title", "Title is required")
.not()
.isEmpty(),
check("author", "Author is required")
.not()
.isEmpty(),
check("body", "Body is required")
.not()
.isEmpty()
],
(req, res) => {
const errors = validationResult(req);
if (errors) {
res.render("add_articles", {
title: "Add Articles",
errors: errors
});
} else {
//GetErrors
let article = new Article();
article.title = req.body.title;
article.author = req.body.author;
article.body = req.body.body;
article.save(err => {
if (err) {
console.log(err);
return;
} else {
req.flash("success", "Article Added");
res.redirect("/");
}
});
}
}
);
消息.pug
.messages
each type in Object.keys(messages)
each message in messages[type]
div(class="alert alert-"+type) #{message}
布局.pug
.container
if successes
for success in successes
div.alert.alert-success #{ success }
if errors
for error , i in errors
div.alert.alert-danger #{ error }
任何帮助都非常感谢..
解决方案
1) 我要注意的第一件事是关于您检查是否存在任何验证错误的方式:
const errors = validationResult(req); if (errors) {...}
应替换为:
const errors = validationResult(req); if (errors.isEmpty()) {...}
2)还有另一个问题,与获取错误数组有关。代替:
res.render("add_articles", {
title: "Add Articles",
errors: errors
});
你需要使用:
res.render("add_articles", {
title: "Add Articles",
errors: errors.array()
});
推荐阅读
- python - 如何将一个张量的值插入另一个张量?
- javascript - 在 react 和 javascript 中删除并获取 sessionid
- javascript - 我正在尝试创建非常简单的 wordpress 插件,但我的 javascript 无法正常工作
- c# - 由于其保护级别 C# 而无法访问
- python - GCP Sheets/Docs API 不在 iframe 中显示文件
- docusignapi - 是否有 API 来跟踪 DocuSign 发送的信封状态?
- pandas - 从每日到每分钟更快地重新采样每日协方差矩阵 (MultiIndex)
- python - 决定使用哪个碰撞段作为反射的影响向量
- python - 是否可以将图像添加到 tkinter 组合框?
- google-apps-script - 使用 Google Apps 脚本填充 Google 文档中的表格单元格