Бегство амперсанда "&" в экспресс / монго - PullRequest
0 голосов
/ 26 апреля 2019

Я использую sanitizeBody.escape в проекте Express / MongoDB. Когда я выполняю дезинфекцию Ampersand &, он дает мне &, затем в следующий раз, когда я "обновляю" это поле, он снова дезинфицирует &, поэтому я получаю &, а затем, если я "обновляю" снова, выражение очищено до & (до бесконечности). Как я могу предотвратить этот тип "лишней" санитарной обработки? Спасибо!

(ниже полный блок кода). , ,

exports.bookinstance_update_post = [
    body('book', 'Book must not be empty').isLength({min: 1}).trim(),
    body('imprint', 'Imprint must not be empty').isLength({min: 1}).trim(),
    body('status', 'Status must not be empty').isLength({min: 1}).trim(),
    body('due_back', 'Invalid date').optional({checkFalsy: true}).isISO8601(),

    sanitizeBody('book').escape(),
    sanitizeBody('imprint').escape(),  // This is the field where I input an ampersand
    sanitizeBody('status').escape(),
    sanitizeBody('due_back').escape(),


    (req,res,next) => {
        const errors = validationResult(req);

        var bookInstance = new BookInstance( {
            book: req.body.book,
            imprint: req.body.imprint,
            status: req.body.status,
            due_back: req.body.due_back,
            _id: req.params.id
        });

        if (!errors.isEmpty()) {
            Book.find({}, function(err, result) {
                if (err) { return next(err);}
                for (let i = 0; i < Status.length; i++) {
                    if (this.bookInstance.status == Status[i]) { Status[i].checked='true'}
                };
                for (let i = 0; i < result.book.length; i++) {
                    if (this.bookInstance.book == result.book[i]) { result.book[i].selected='true'}
                };
                res.render('bookinstance_form', { title: 'Update BookInstance', book_list: result.book, status: Status, errors: errors.array()})
            });
        } else {
            BookInstance.findByIdAndUpdate(req.params.id,bookInstance,function(err, result){
                if (err) { return next(err);}
                res.redirect('/catalog/bookinstances');
            });
        }
    }
]

...