راکت

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

4 پاسخ

سلام

یک مشکل دارم توی اعتبار سنجی اطلاعات زمانی که صفحه 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="https://roocket.ir/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

موسوی
موسوی
@tinyboy
ثبت پرسش جدید

پاسخ‌ها

4
saleh
saleh
@Salehsg1378

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

موسوی
موسوی
@tinyboy

تخصص: برنامه نویس وب

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

شاید پاسخ شما همین‌جا باشد

hdjs
hdjs
@hd.2033

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

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

تخصص: برنامه نویس وب

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

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

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