Я использую 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');
});
}
}
]