2017-01-10 5 views
1

DocumentDbストアドプロシージャをテストしているうちに、私は重複したIDを持つドキュメントを意図的に作成して、DocumentClientExceptionを観察できるようにしました。 http://azure.github.io/azure-documentdb-js-server/Collection.html#.ErrorCodesの文書によると、私は例外がコンフリクトを示す409ステータスコードを持つと予想していました。ドキュメントクライアント例外不正なエラーステータスコード

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

私は例外を受け取るかが、エラーコードは400(BadRequest)は次のよう

ストアドプロシージャのコードがあります。メッセージ・テキストに正しい問題が示されています。指定されたIDまたは名前を持つリソースがすでに存在します。 "メッセージ:{\"エラー: "[\"実行中に例外が発生しました。 Exception =エラー:{\\ "Errors \\":[\\ "指定されたIDまたは名前を持つリソースは既に存在しています\\"]} \ r \ nStackトレース:Error:{\\ "Errors \\":[\\ " "匿名関数(duplicateIdTest.js:56:26)\ n匿名関数(duplicateIdTest.js:685:29)\"]} \ r \ nActivityIdで指定されたIDまたは名前のリソースが既に存在します。 :886230cf-8d49-433e-845f-8cc7c2ae486d、リクエストURI:/ apps/514defcb-ac21-44e6-a8e0-c7b785523c6c/services/32782613-7101-4924-97b0-604052a6723b/partitions/be6c2ec8-130c-4596-90a2-b1807977dd0b/replicas/131240065159522367p "

私に何か不足していますか?ありがとう。

答えて

0

ストアドプロシージャ内にスローされたすべてのエラーは、400 (BadRequest)として伝播されます。ただし、createDocumentのようなデータベースへの個々の呼び出しは、REST APIと同じエラーコードを返します。

たとえば、コールバック内のerr.code === 409の値を確認して、競合のためにcrateDocumentが失敗したことを検証できます。他の何かではありません。

+0

ありがとうございました。少し不思議そうですが、次の 'if(err)throw new error( 'CODE' + err.number + 'CODE');を使用して実際のコードを取得し、Regexを使用してエラーメッセージからそれを分割することができます。 –

関連する問題