我想我真的很想弄清楚这一点。发现错误后,我只是想重新填充表单数据。在下面的示例中,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%;')

最佳答案

不要使用构造函数作为渲染对象。定义一个简单的对象

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)是否未定义。

10-06 12:11