2013-12-05 3 views
2

Я строю сервер Rails с моделью, хранящейся в MongoDB с использованием Mongoid.Mongoid: получение кода ошибки mongo от Moped :: Ошибки

Бывают случаи, когда пользователь может попытаться добавить документ в базу данных mongo с дублирующимся значением индекса. Есть ли способ получить код ошибки MongoDB (в этом случае 11000) без разбора сообщения об ошибке, чтобы я мог сделать обработку исключений более надежной?

EDIT: Название было Mongoid :: Ошибок вместо мопеда :: Ошибка

ответ

3

Я Разработал mongoid_token камень и столкнулся с этой точной задачей, так как основная функциональность этого драгоценного камня зависит от способности идентифицировать, если в конкретной области (в этом случае токен) является причиной дублирования ключей.

Если все, что вам нужно, это код ошибки, да - вы можете это получить. Однако, если вам нужны более точные данные (например, имя поля), вам потребуется разобрать описание ошибки.

Кроме того, если вы тестируете дубликаты ключей, я думаю, вам нужно будет проверить коды ошибок 11000 и 11001 (дубликат ключа при обновлении). Частичный список кодов ошибок mongoDB: here.

Я перефразировал часть кода из камня ниже:

begin 
    #... do whatever 
rescue Moped::Errors::OperationFailure => e 
    description = e.details['err'] 

    if [11000, 11001].include?(e.details['code']) 
    # Duplicate key error 
    end 
end 
Смежные вопросы