user14398337
user14398337

Reputation:

username and data not defined NodeJs

I'm trying to open places.ejs file by clicking the submit button on show.js page, just like the show.ejs page opens on clicking the submit button on new.ejs file, but a reference error is occurring. Please help me fix the error. I'm attaching herewith my routes.js code and a part of my index.js code Any help would be highly appreciable. Thank you

Here's my routes.js code

const { con, sessionStore } = require('./config/db');

exports.new = function (req, res) {
    message = '';
    if (req.method == "POST") {
        const post = req.body;
        const username = post.username;
        const title = post.title;
        const state = post.state;
        const category = post.category;
        const description = post.description;

        if (!req.files)
            return res.status(400).send('No files were uploaded.');

        const file = req.files.uploaded_image;
        var img_name = file.name;

        if (file.mimetype == "image/jpeg" || file.mimetype == "image/png" || file.mimetype == "image/gif") {

            file.mv('public/imgs/uploads/' + file.name, function (err) {

                var sql = "INSERT INTO `nt_data`(`username`,`title`,`state`,`category`, `images` ,`description`) VALUES (?,?,?,?,?,?)";
                var query = con.query(sql, [username, title, state, category, img_name, description], function (err) {
                    console.log(err)
                    if (!err) {
                        res.redirect('show/' + username + '/' + category);
                    }
                    else {
                        message = "This format is not allowed , please upload file with '.png','.gif','.jpg'";
                        res.render('new.ejs', { message: message });
                    }
                });
            });

        }
    }
    else {
        res.render('new');
    }
};



exports.show = function (req, res) {
    let message = '';
    con.query('SELECT * FROM nt_data WHERE username=? AND category=?', [req.params.username, req.params.category], (err, result) => {

        console.log(err)
        if (result.length <= 0) {

            message = "show not found!";

            res.render('show.ejs', { data: result, message: message });
        }
        else {
            res.redirect('places/' + username);
        }
    });
    res.render('show');
};

here's a part of my index.js code

app.get('/new', loginRequired, routes.new);
app.post('/', loginRequired, routes.new);


app.get('/show/:username/:category', loginRequired, routes.show);
app.post('/', loginRequired, routes.show);
app.get('/places/:username', loginRequired, routes.show);

error

ReferenceError: data is not defined
ReferenceError: username is not defined

Upvotes: 0

Views: 613

Answers (2)

Stefan Diskic
Stefan Diskic

Reputation: 53

In show function, you need to get username like this:

req.params.username

And for data I don't see where do you reference it, in witch line to do get an error?

Upvotes: 1

Faraz
Faraz

Reputation: 443

exports.show = function (req, res) {
    let message = '';
    con.query('SELECT * FROM nt_data WHERE username=? AND category=?', [req.params.username, req.params.category], (err, result) => {

        console.log(err)
        if (result.length <= 0) {

            message = "show not found!";

            res.render('show.ejs', { data: result, message: message });
        }
        else {
            res.redirect('places/' + req.params.username); // Change here
        }
    });
    res.render('show');
};

Upvotes: 0

Related Questions