NodeJS Express: заполнить форму после обнаружения ошибки - PullRequest
1 голос
/ 25 марта 2019

Я думаю, что я действительно близок к тому, чтобы понять это.Я просто пытаюсь снова заполнить данные формы после обнаружения ошибки.В моем примере ниже age и platelet_count должны быть заполнены заново, но это не так.

Название модели: Store.js

storeController.js

exports.store_create_post = [

    body('age', 'Please enter age').isLength({ min:1 }),
    body('platelet_count', 'Please enter platelet count').isLength({ min: 1 }),


    // sanitizeBody('age').escape(),

    (req, res, next) => {
        //Extract the validation errors from a request.
        const errors = validationResult(req);

        //Store form values for post data when error caught
        var predModel = new Store(
                { 
                    age: req.body.age, 
                    platelet_count: req.body.platelet_count
                }
        );

        if (!errors.isEmpty()) {
            //Validation or Sanitation checks did not pass
            res.render('predictionModel', {title: 'Risk Calculator', Store: predModel, errors: errors.array()});
            return;

        }

Я думаю, что моя проблема в том, что я не могу понять, чтоаргумент в res.render (Store: predModel) делает.Я могу переключить аргумент в обратном направлении (predModel: Store), и он все еще работает так же.

Вот мои маршруты:

index.js

//Get request for PredctionModel Form
router.get('/predictionModel', storeController.store_create_get);

//Post request for PredictionModel
router.post('/predictionModel', storeController.store_create_post);

Любой совет приветствуется.

Обновление,Вот моя страница формы с большей частью удаленного контента для удобного просмотра:

_modelForm.pug

mixin predictionModelForm(store = {})


    form(action="/predictionModel" method="POST" class="card")

        label(for="age") How old is the patient (years)?    
            input(type='number', name='age', style='width: 100px;', placeholder="40-89")

        input(type="submit" value="Predicted Risks" class="button" style='width: 50%;')

1 Ответ

1 голос
/ 26 марта 2019

Не используйте ваш конструктор и ваш визуализированный объект. Определить простой объект

var predModel = { 
    age: req.body.age, 
    platelet_count: req.body.platelet_count 
} 

и визуализируйте это так

res.render('predictionModel', {title: 'Risk Calculator', predModel: predModel, errors: errors.array()});

и внутри вашего ввода вы можете добавить значение таким образом.

input(type='number', name='age', style='width: 100px;', value=predModel.age, placeholder="40-89")

Кроме того, поскольку вы отображаете один и тот же файл pug, вы должны проверить, не определены ли отображаемые вами свойства (например, predModel).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...