Выражение node.js - как передать параметры тела POST обратно в исходную форму для повторного заполнения при аннулировании? - PullRequest
0 голосов
/ 09 января 2019

У меня есть форма регистрации, которую я хочу повторно заполнить данными, введенными пользователем, когда форма отправлена, но в них есть ошибки. Я использую экспресс-валидатор и connect-flash для проверки / отображения сообщений об ошибках. Кажется, я не могу найти способ передать исходные значения обратно, чтобы заполнить поле.

Вот мой маршрут:

router.post('/edit',
    // Input validation
    function(req, res, next) {

        req.checkBody('username', 'Username cannot be empty').trim().notEmpty();

        var errors = req.validationErrors(true);
        if (errors) {
            req.flash('validation', errors);
            res.redirect('/vendor/edit/'));
        } else {
           //Add to DB
        }
    });

Здесь я либо загружаю исходную форму, либо куда она перенаправляется, чтобы показать форму с сообщениями об ошибках. :

router.get('/edit', function(req, res) {
    res.render('vendor_edit', {
        validation: req.flash('validation')[0],
        error: req.flash('error')[0],
    });
});

Тем не менее, форма пуста, когда она перенаправляется, так как мой шаблон не имеет исходных значений, или я не знаю, как получить к ним доступ, если они были естественным образом переданы? - Я пытаюсь сделать в ПУГ.

1 Ответ

0 голосов
/ 11 января 2019

Это стало возможным благодаря этому сообщению: Как перенаправить в expressjs при передаче некоторого контекста?

Для ленивых, вот копия и вставка кода из вышеуказанной ссылки, для меня это сработало.

var express  = require('express');
var jade     = require('jade');
var http     = require("http");


var app    = express();
var server = http.createServer(app);

/////////////
// Routing //
/////////////

// Move route middleware into named
// functions
function homeCtrl(req, res) {

    // Prepare the context
    var context = req.dataProcessed;
    res.render('home.jade', context);
}

function categoryCtrl(req, res, next) {

    // Process the data received in req.body
    // instead of res.redirect('/');
    req.dataProcessed = somethingYouDid;
    return next();
    // optionally - Same effect
    // accept no need to define homeCtrl
    // as the last piece of middleware
    // return homeCtrl(req, res, next);
}

app.get('/', homeCtrl);

app.post('/category', categoryCtrl, homeCtrl);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...