首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sails.js/waterline验证错误处理

sails.js/waterline验证错误处理
EN

Stack Overflow用户
提问于 2015-10-31 09:03:44
回答 1查看 1K关注 0票数 1

我对如何管理来自waterline的错误验证感到相当困惑,我需要一些关于良好实践的澄清。通常我有一连串这样的承诺:

代码语言:javascript
复制
  sails.models.user.findOne(...)
  .then(function(){
      //...
      //...
      return sails.models.user.update(...);
  })
  .then(....)
  .then(....)
  .catch(function(err){

  })

出现的一个问题是当waterline返回验证错误时。在这种情况下,我通常需要知道问题是什么时候由客户端的错误输入或代码中的bug产生的。

我最终要做的是将waterline promise封装在promise中,这样就可以正确地处理验证错误。所以最终的代码是:

代码语言:javascript
复制
  ...
  .then(function(){
      //...
      //...
      return new Promise(function(resolve,reject){
        sails.models.user.update(...)
        .then(resolve)
        .catch(function(err){
            //the error is a bug, return the error object inside the waterline WLError
            reject(err._e);

            //the error is caused by wrong input, return the waterline WLError
            reject(err);
        })
      })
  })
  .then(function(){
        //second example: we are sure that a validation error can't be caused by a wrong input
        return wrapPromise(sails.models.user.find());
  })
  .then(....)
  .catch(function(err){
      //WLError ---> res.send(400);
      //Error object --> res.send(500);
  })


  function wrapPromise(action){
      //return an error object on validation error
      return new Promise(function(resolve,reject){
          action
          .then(resolve)
          .catch(function(err){
              reject(err._e || err);
          })
      })
  }

我做的事情正确吗?有没有更好的方法来正确处理错误?谢谢

EN

回答 1

Stack Overflow用户

发布于 2016-02-23 19:10:33

您可以简单地在catch中添加检查,以区分验证和其他错误:

代码语言:javascript
复制
sails.models.user.findOne(...)
  .then(function(){
      //...
      //...
      return sails.models.user.update(...);
  })
  .then(....)
  .then(....)
  .catch(function(err){
      if(err.error == "E_VALIDATION") {
          // validation error
      }
  })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33446967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档