#javascript #node.js #express
#javascript #node.js #выразить
Вопрос:
В моем приложении данные отображаются изначально при загрузке страницы, и на той же странице у меня есть модуль для добавления данных. Я пытаюсь проверить, являются ли некоторые поля пустыми при добавлении данных, и отобразить их на странице.
Что произошло, когда я рендерю страницу с ошибками при добавлении данных, те данные, которые были загружены изначально при загрузке страницы, теряются, потому что я рендерю страницу только с ошибкой, а не с целыми данными agai
API, который загружает данные во время загрузки страницы
router.get('/model', function(req, res, next) {
var tvs = [];
var refrigerators = [];
var washingMachines = [];
db.query("SELECT * FROM model", (error, results, fields) => {
if(results) {
for(var i=0; i<results.length; i ){
if(results[i].category === 'refrigerator'){
refrigerators.push({id: results[i].id, model: results[i].name});
}
else if(results[i].category === 'tv') {
tvs.push({id: results[i].id, model: results[i].name});
}
else if(results[i].category === 'wm') {
washingMachines.push({id: results[i].id, model: results[i].name});
}
}
res.render("home/model", {refrigerators: refrigerators, tvs: tvs, washingMachines: washingMachines});
}
if(error) throw error;
});
});
API, который проверяет ошибки (если таковые имеются) во время добавления данных,
router.post('/add-model', function(req, res, next) {
var model = req.body.modelName;
var category = req.body.category;
var errors = [];
//check if any fields are empty
if(!model) {
errors.push({'error_message': 'Model name cannot be empty!'});
}
else if(!category) {
errors.push({'error_message': 'Category cannot be empty!'});
}
if(errors.length > 0){
console.log("flow is coming here!");
res.render('home/model', {errors: errors});
} else {
//check if model already exit
res.end('it is working as expected!');
}
});
Я не думаю, что хорошо снова писать всю логику внутри api, который добавляет модель (в данном случае).
Что может быть наилучшей практикой для отображения страницы с ошибкой, не затрагивая ранее загруженные данные?
Комментарии:
1. возможно, вы захотите попробовать flash: npmjs.com/package/connect-flash
2. Прежде всего, большинство ошибок довольно простые, например, отсутствуют, чего можно легко избежать, используя интерфейсную библиотеку, такую jqueryvalidation.org даже можно использовать проверки HTML. Вместо post я бы предложил использовать AJAX для этого. В прошлом у меня была похожая проблема, и в результате я в конечном итоге использовал какой-то другой фреймворк, который поддерживает такие функции, как расширенный рендеринг и сохранение встроенных сообщений о сеансах.