Sails-mongo 适配器,标准化错误消息

Posted

技术标签:

【中文标题】Sails-mongo 适配器,标准化错误消息【英文标题】:sails-mongo adapter, normalize error messages 【发布时间】:2015-04-04 07:15:28 【问题描述】:

我正在使用sails-mongo 适配器在mongodb 中试用sailsJs。 向模型添加验证后,当验证失败时,我会收到以下响应。

Users.js 模型:

module.exports = 
    schema: true,
    attributes: 
        name: 
            type: "string",
            unique: true
        ,
        email: 
            type: "email",
            unique: true
        ,
        password: 
            type: "string",
            required: true
        
    
   

使用sails-mongo 适配器时出现验证错误:


  "error": 
    "error": "E_UNKNOWN",
    "status": 500,
    "summary": "Encountered an unexpected error",
    "raw": 
      "name": "MongoError",
      "code": 11000,
      "err": "E11000 duplicate key error index: eReporterDB.users.$name_1 dup key:  : \"codin\" "
    
  

如果我使用作为sails-disk适配器的开发数据库,​​我会得到更好的格式化响应。

使用sails-disk 适配器时出现验证错误:


  "error": 
    "error": "E_VALIDATION",
    "status": 400,
    "summary": "2 attributes are invalid",
    "invalidAttributes": 
      "name": [
        
          "value": "codin",
          "rule": "unique",
          "message": "A record with that `name` already exists (`codin`)."
        
      ]
    
  

作为一名开发人员,我希望从框架中得到标准化的响应, 任何人都可以帮助我以一种优雅的方式处理此类验证错误。 我的意思是我不能只向外行用户显示错误"E11000 duplicate key error index: eReporterDB.users.$name_1 dup key: : \"codin\" "

谢谢。

【问题讨论】:

你需要发布你的模型 【参考方案1】:

sails.js 只是报告数据库给出的错误。只是sails-disk 有更好的错误消息。 sails-mongo 适配器最终会给出数据库直接报告的错误;因此,为了美化这些,您只需将原始错误映射到更用户友好的消息中,就像任何其他数据库驱动程序一样。

【讨论】:

对,我明白有点晚了,我将按照您所说的将mongo报告的错误代码映射到一些错误消息,这听起来不错还是您知道其他一些方法, 谢谢 这也发生在我的案例中,sails-postgres 0.11.2

以上是关于Sails-mongo 适配器,标准化错误消息的主要内容,如果未能解决你的问题,请参考以下文章

调用安全适配器返回响应错误 401

Firebase 列表适配器构造函数错误

VirtualBox 仅主机以太网适配器驱动程序错误

基于 IBM Worklight 适配器的身份验证

VirtualBox仅主机以太网适配器驱动程序错误

RecyclerView:没有附加适配器;跳过布局[重复]