2017-04-20 8 views
1

私は少し前挿入トリガー(コレクション内の各ドキュメントの数値IDを生成する)を作成しようとしています。登録し、DocumentDB .NET SDKを使用して実行します。それは「エラー要求メッセージを作成する」例外で失敗し、私は私の.NETコードはsucessfullyに登録documentdbエラー作成要求メッセージ

function generateNumericId() { 
var counterDocumentId = 'numericIdCounter'; 
var counterDocumentLink = __.getSelfLink() + 'docs/' + counterDocumentId; 
__.readDocument(counterDocumentLink, {}, 
    function(err, counterDocument) { 
     if (err) throw new Error("Can't find counterDocument!"); 
     counterDocument.value += 1; 
     __.upsertDocument(counterDocumentLink, counterDocument); 
     var docToCreate = __.request.getBody(); 
     docToCreate.id = counterDocument.value.toString(); 
     __.request.setBody(docToCreate); 
    });} 
私のコードをテストするためにDocumentDBエミュレータを使用していますが、私は挿入操作 を実行しているとき。だから、私のコードに何が間違っているのか教えてください。 (!重要:私はすでにコレクション内numericIdCounter書類を持って、jsのコードはreadDocument機能で失敗)

+0

'' jsコードがreadDocument関数で失敗する '' ** docToCreate **のフィールドにエラーの詳細を記録し、エラーから有用な情報が見つかるかどうかを確認してください。 –

+0

しかし、 '__。readDocument'はコールバックを実行しないので、どうすれば内部の詳細を記録できますか? –

答えて

1

第一の間違い:__.getSelfLink() =>__.getAltLink()getSelfLink()は内部_idフィールドから構築されたパスを提供するので、(それが私たちのためにOKではありません - 我々はカウンタidのみを知っており、内部は_idではありません。 getAltLink()は、dbs/dLIxAA==/colls/dLIxAOFiYAA=/docs/dLIxAOFiYAABAAAAAAAAAA==/の代わりにdbs/mydb/colls/mycoll/docs/numericIdCounterのようなURLを作成できます。

第2の間違い:__.upsertDocument(counterDocumentLink, counterDocument); =>__.upsertDocument(__.getAltLink(), counterDocument); apiのドキュメントを確認した直後。

関連する問題