2016-04-14 16 views
1

Sproc çalışması güzel çalışıyor, ancak ona bir parametre iletemiyorum. Azure portalından beklendiği gibi çalışır, ancak .net'den çağrıldığında değil.Call DocumentDb saklı yordamı .Net ile parametreler.

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 gerçekten

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.'); 
} 

değişmedi

.net çağrılan çıkışı "[object Object] bulunamadı belgeler!" [Nesne Nesnesi] 'nin parametre değerim olmasını beklerdim. Parametre kısıtlamasını kaldırırsam, uygun bir sonuç ayarlıyorum. Ayrıca azure parametresiyle çalıştırırsam, uygun bir sonuç alırım.

Zamanın önündedir. rrid çıkış [object Object] olarak gösteren neden olduğu -

cevap

1

ExecuteStoredProcedureAsync() (sproc) için 2. parametre saklı yordamda 1 parametre eşleştirilir.

deneyin koşu:

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

Ug teşekkürler. Sanırım kodumu kötü bir örnekle kapatıyordum. Belki sonra açıklayabilirsin, ilk önce sproc adından Select * yazan birkaç örnek gördüm. Sproc ID'yi çıkarmak için mi kullanılmalı yoksa bunu yapmanın amacı nedir? – VirtualLife

+1

DocumentDB yayımlandığında, tüm kaynakların sistem tarafından oluşturulmuş bir '_self' bağlantı ... tarafından başvurulması gerekir; Yaklaşık yarım yıl önce, kullanıcı tanımlı "id" tarafından yönlendiriliyor - bu da kimliği gereksiz yere sorgulama kaynakları yapıyor. –