Адаптер Sails-Mongo, нормализовать сообщения об ошибках

Я пытаюсь использовать паруса с mongodb, используя адаптер паруса-монго. После добавления проверок в модель я получаю следующий ответ, когда проверка не удалась.

Модель 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:

{
  "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\" }" непрофессионалу.

Спасибо.


person codin    schedule 04.04.2015    source источник
comment
вам нужно разместить свои модели   -  person Travis Webb    schedule 04.04.2015


Ответы (1)


Sails.js просто сообщает об ошибке, выдаваемой базой данных. Просто sails-disk имеет более приятные сообщения об ошибках. Адаптер sails-mongo в конечном итоге выдает ошибку, о которой сообщает непосредственно база данных; поэтому, чтобы украсить их, вам просто нужно отобразить необработанные ошибки в более удобные для пользователя сообщения, как и любой другой драйвер базы данных.

person Travis Webb    schedule 04.04.2015
comment
Да, я понял, что немного поздно, я собираюсь сделать то, что вы сказали, сопоставив КОДЫ ошибок, о которых сообщает монго, с некоторыми сообщениями об ошибках, это звучит нормально или вы знаете какой-то другой метод, спасибо - person codin; 04.04.2015
comment
Это также происходит с парусами-постгрес в моем случае 0.11.2 - person jhonny lopez; 09.02.2016