2016-04-14 10 views
1

sprocの呼び出しはうまく動作しますが、パラメータを渡すことができません。 Azureのポータルからは期待通りに動作しますが、.netから呼び出されたときは動作しません。パラメータを持つ.NetからDocumentDbストアドプロシージャを呼び出します。

documentClient = new DocumentClient(new Uri(endpointUrl), authorizationKeyAdmin); 
var sproc = documentClient.CreateStoredProcedureQuery(_companyCollection.StoredProceduresLink, "select * from root r where r.id = \"testSproc\""); 
var result = documentClient.ExecuteStoredProcedureAsync<string>("dbs/GypNAB==/colls/GxpNAKrZMwA=/sprocs/GxpNAKrZMwxxxxAAAAAAAgA==/", sproc, "MyParameter"); 

SPROCを本当に

function sample(rrid) { 
    var collection = getContext().getCollection(); 
    // Query documents and take 1st item. 
    var isAccepted = collection.queryDocuments(
     collection.getSelfLink(), 
     'SELECT top 1 * FROM c where c.RRID = "'+rrid+'"', 
     function (err, feed, options) { 
      if (err) throw err; 

      // Check the feed and if empty, set the body to 'no docs found', 
      // else take 1st element from feed 
      if (!feed || !feed.length) getContext().getResponse().setBody(rrid + 'no docs found!'); 
      else getContext().getResponse().setBody(JSON.stringify(feed[0])); 
     }); 

    if (!isAccepted) throw new Error('The query was not accepted by the server.'); 
} 

を変更していない

.NETから呼び出される出力は、 "[オブジェクトのオブジェクト]が見つかりませんドキュメント!"私は[Object Object]が私のパラメータ値であると思います。パラメータの制限を解除すると、適切な結果が返されます。また、私はそれをazureのパラメータで実行すると、適切な結果が返されます。

ありがとうございます。 rrid出力に[object Object]として表示されている理由である -

答えて

1

ExecuteStoredProcedureAsync()sproc)のための第2パラメータは、ストアドプロシージャ内の第1パラメータにマッピングされます。

てみランニング:

var result = documentClient.ExecuteStoredProcedureAsync<string>("dbs/GypNAB==/colls/GxpNAKrZMwA=/sprocs/GxpNAKrZMwxxxxAAAAAAAgA==/", "MyParameter"); 
+0

赫旭、ありがとう。私のコードを悪い例から抜き出していたと思います。たぶんあなたは説明することができます、私はsproc名から​​最初に*を選択するいくつかの例を見てきました。それはsproc IDを取得するために使われるはずですか、それを行う目的は何ですか? – VirtualLife

+1

DocumentDBがリリースされたとき、すべてのリソースは、システムによって生成された '_self'リンクによって参照される必要がありました。これは、古いサンプルに基づいている可能性があります。およそ半年前、ユーザー定義の 'id'でルーティングしています。これはidでリソースを冗長に照会します。 –

関連する問題