2017-01-10 4 views
1

При тестировании хранимых процедур DocumentDb я намеренно создал документ с дублирующимся идентификатором, чтобы я мог наблюдать исключение DocumentClientException. Согласно документации на http://azure.github.io/azure-documentdb-js-server/Collection.html#.ErrorCodes, я ожидал, что в исключении будет код состояния 409, указывающий Conflict.Исключение клиента клиента Неверный код состояния ошибки

Хранимая процедура код выглядит следующим образом:

isAccepted = collection.createDocument(collectionLink, 
     duplicateIdDoc, 
     { disableAutomaticIdGeneration: true }, 
     function(err, createdDoc, options){ 
      if (err) throw err; // Rollback      
     }); 

я получить исключение, но код ошибки 400 (BadRequest). Текст сообщения указывает на правильную проблему. Ресурс с указанным идентификатором или именем уже существует.

Сообщение: {\ "Errors \": [\ "Исключенное исключение при выполнении функции. Исключение = Ошибка: {\\ "Ошибки \\": [\\ "Ресурс с указанным идентификатором или именем уже существует \\"]} \ r \ nСтрана трассировки: Ошибка: {\\ "Ошибки \\": [\\ «Ресурс с указанным идентификатором или именем уже существует \\"]} \ n в функции Аноним (duplicateIdTest.js: 56: 26) \ n в функции Аноним (duplicateIdTest.js: 685: 29) \ "]} \ r \ nActivityId : 886230cf-8d49-433e-845f-8cc7c2ae486d, запрос URI:/apps/514defcb-ac21-44e6-a8e0-c7b785523c6c/services/32782613-7101-4924-97b0-604052a6723b/разделы/be6c2ec8-130c-4596-90a2-b1807977dd0b/replicas/131240065159522367p "

Я что-то упустил? Благодарю.

ответ

0

Все ошибки, заброшенные внутри хранимых процедур, распространяются как 400 (BadRequest). Однако отдельные вызовы в базу данных, такие как createDocument, возвращают те же коды ошибок, что и REST API.

Например, вы можете проверить значение err.code === 409 внутри вашего обратного вызова, чтобы подтвердить, что crateDocument не удалось из-за конфликта. а не что-то еще.

+0

Спасибо. Кажется немного странным, но я могу получить реальный код, используя следующую ошибку if (err) throw new ('CODE' + err.number + 'CODE'); 'и используя Regex, чтобы разбить его на сообщение об ошибке. –

Смежные вопросы