Добавить флеш-сообщение для создания без потери страницы
0 Carasel [2015-02-17 12:32:00]
Я использую node.js и express для создания веб-приложения CRUD, и я пытаюсь выяснить, как получить флэш-сообщение в форме ввода данных, когда проверка на стороне сервера не удалась. Я использую экспресс-флеш для флеш-сообщений.
Код проверки работает, возвращая ошибки, и я создаю флэш-сообщение:
var errors = validateForm(req);
if(errors){
req.flash('info',errors);
res.render('edit', {messages: req.flash('info')});
}
И отобразите сообщение в файле edit.jade:
if messages.info
p #{messages.info}
Проблема в том, что я редактирую конкретный объект, а URL-адрес не редактируется, а /edit/objectID. Доступ к странице выглядит следующим образом:
router.get('/edit/:id', function(req, res) {
var db = req.db;
var collection = db.get('mydb');
collection.find({ID: req.params.id},{},function(e,docs){
res.render('edit', {"object" : docs});
});
});
Можно ли добавить флэш-сообщение для проверки на стороне сервера после отправки POST без потери идентификатора страницы? Мне не нужны все данные из редактирования, будет проверка на стороне клиента, чтобы, надеюсь, подобрать какие-либо ошибки, но я бы хотел, чтобы ошибки проверки на стороне сервера заставили пользователя приземлиться на той же странице объекта, что и они.
node.js pug express
1 ответ
1 Решение Shahzaib Ali Khan [2015-02-17 13:32:00]
Вы можете объявить свой почтовый маршрут следующим образом:
router.post('/edit/:id', function(req, res) {
// logic to check for errors
// if errors, set flash message and
// redirect to /edit/:id
});
Затем вы можете использовать идентификатор в почтовом маршруте для перенаправления на страницу редактирования того же ресурса, на который пользователь разместил форму. Вы также сможете получить доступ к сообщениям об ошибках в шаблоне.
* Редактировать * Чтобы использовать флеш-память для перенаправления, вам нужно будет добавить это промежуточное программное обеспечение.
app.configure(function() {
app.use(express.cookieParser('keyboard cat'));
app.use(express.session({ cookie: { maxAge: 60000 }}));
app.use(flash());
});