موسوی
6 سال پیش توسط موسوی مطرح شد
4 پاسخ

مشکل در اعتبار سنجی اطلاعات در express

سلام

یک مشکل دارم توی اعتبار سنجی اطلاعات زمانی که صفحه login رو باز میکنم میگه Message is not defined
در حالی که من شرط رو قرار دادم داخل صفحه لاگین

اینم کد دو صفحه

کد index.js

const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const bodyParser = require('body-parser');
const validator = require('express-validator');
const _ = require('lodash');

app.set('view engine' , 'ejs');
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.urlencoded({ extended: false}));
app.use(bodyParser.json());
app.use(validator());

app.get('/' , (req , res) => {
    let title = 'صفحه اصلی';
    res.render('index' , { title })
});

app.get('/login' , (req , res) => {
    res.render('login');
});

app.post('/login' , (req , res) => {
    req.checkBody('email' , 'Empty Email').notEmpty();
    req.checkBody('email' , 'Email is InValid').isEmail();

    return req.getValidationResult()
        .then(result => {

            let errors = result.array();
            if (errors.length > 0) {
                let Message = [];
                errors.forEach((err) => Message.push(err.msg));
                res.render('login' , {Message});
            }

        }).catch(err => console.log(err))
});

server.listen(2500 , () => {
    console.log('server runnig at port 2500');
});

کد صفحه لاگین login.ejs

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>ورود به سایت</title>
    <link rel="stylesheet" href="/css/app.css">
</head>
<body>

    <% if (Message) { %>
        <b>Error</b>
    <% } %>    

    <form action="/login" method="post">
        <p><input type="email" name="email" value="" placeholder="E-Mail Address"></p>
        <p><button type="submit">Login</button></p>
    </form>
</body>
</html>

الان باید چی کار کنم مشکل حل بشه

@hesammousavi


ثبت پرسش جدید
saleh
@Salehsg1378 6 سال پیش آپدیت شد
0

سلام ببیند اون جای که دارید صفحه لاگین رو رندر میکنین هم باید Message ارسال بشه و شما اینکار نکردین ، میتوند از پکیج connect-flash استفاده کنید و مقدار خطا ها رو درون flash ذخیره کنید و redirect کنید به صفحه لاگین


موسوی
تخصص : برنامه نویس وب
@tinyboy 6 سال پیش مطرح شد
0

Message رو پاس دادم به صفحه لاگین اما باز مشکل هست


hdjs
@hd.2033 6 سال پیش آپدیت شد
0

سلام.
به این شکل کار می کند:

const express = require('express');
const app = express();
const http = require('http');
const server = http.createServer(app);
const bodyParser = require('body-parser');
const validator = require('express-validator');
const _ = require('lodash');
const flash = require('connect-flash');

app.set('view engine' , 'ejs');
app.use(express.static(__dirname + '/public'));
app.use(bodyParser.urlencoded({ extended: false}));
app.use(bodyParser.json());
app.use(validator());

app.get('/' , (req , res) => {
    let title = 'صفحه اصلی';
    res.render('index' , { title })
});

app.get('/login' , (req , res) => {
  const errors = req.flash('errors' , Message  )
    res.render('login', {hasErrors : errors.length > 0 , message: errors});
});

app.post('/login' , (req , res) => {
    req.checkBody('email' , 'Empty Email').notEmpty();
    req.checkBody('email' , 'Email is InValid').isEmail();

    return req.getValidationResult()
        .then(result => {

            let errors = result.array();
            if (errors.length > 0) {
                let Message = [];
                errors.forEach((err) => Message.push(err.msg));
                req.flash('errors' , Message  )
                res.redirect('/login')
            }

        }).catch(err => console.log(err))
});

server.listen(2500 , () => {
    console.log('server runnig at port 2500');
});

<% if (hasErrors) { %>
    <b><%= message%></b>
<% } %>

موسوی
تخصص : برنامه نویس وب
@tinyboy 6 سال پیش مطرح شد
0

مشکل بر طرف نشد کلا flash مقدارش خالیه یعنی مقدار errors خالیه زمانی که به صفحه ارسال میشه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام