Node js:在不呈现整个页面的情况下呈现错误的最佳方法是什么?

时间:2019-03-16 05:04:04

标签: javascript node.js express

在我的应用程序中,页面加载时最初呈现数据,并且在同一页面中,我具有添加数据的模块。我正在尝试在添加数据并将其呈现在页面中时检查某些字段是否为空。

发生的事情是,当我在添加数据时呈现错误的页面时,页面加载期间最初加载的那些数据会丢失,因为我呈现的是错误页面而不是整个数据。

在页面加载期间加载数据的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内再次编写整个逻辑不是很好(在这种情况下)。 在不影响先前加载的数据的情况下呈现错误页面的最佳实践是什么?

0 个答案:

没有答案