Почему я не получаю Валидационное Flash-сообщение в пользовательском интерфейсе, я получаю флэш-ошибку вроде этого [объект объекта], [объект объекта], [объект объекта] - PullRequest
0 голосов
/ 24 октября 2019

Я работаю над приложением NodeJs, это приложение Blog. и я использовал Express Validator, я пытаюсь проверить данные с флэш-сообщением перед сохранением сообщений в базе данных с экспресс-сообщением флэш-памяти на стороне пользовательского интерфейса, я успешно сохраняю данные в базе данных, но сообщение не отображается на стороне пользовательского интерфейса после отправки форм, я получаю ошибку флэш-памяти, как это[object Object],[object Object],[object Object]

Я использую движок шаблонов pug.

app.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("/");
        }
      });
    }
  }
);

message.pug

.messages
 each type in Object.keys(messages)
    each message in messages[type]
      div(class="alert alert-"+type) #{message}

layout.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 Ответ

1 голос
/ 31 октября 2019

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() });

Источник: Документы экспресс-проверки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...