Узел js: каков наилучший способ отрисовки ошибки без отрисовки всей страницы?

#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 для этого. В прошлом у меня была похожая проблема, и в результате я в конечном итоге использовал какой-то другой фреймворк, который поддерживает такие функции, как расширенный рендеринг и сохранение встроенных сообщений о сеансах.