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

3 سال پیش توسط موسوی مطرح شد
آفلاین
user-avatar
موسوی ( 7660 تجربه )
3 سال پیش
تخصص : برنامه نویس وب

لینک کوتاه اشتراک گذاری

0

سلام

یک مشکل دارم توی اعتبار سنجی اطلاعات زمانی که صفحه 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

آفلاین
user-avatar
saleh ( 620 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
موسوی ( 7660 تجربه )
3 سال پیش
تخصص : برنامه نویس وب

لینک کوتاه اشتراک گذاری

0

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

آفلاین
user-avatar
hdjs ( 70 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

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>
<% } %>
آفلاین
user-avatar
موسوی ( 7660 تجربه )
3 سال پیش
تخصص : برنامه نویس وب

لینک کوتاه اشتراک گذاری

0

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

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.