2017-05-31 3 views
0

Ich bin neu in Azure DocumentDB und bei der Ausführung einer grundlegenden gespeicherten Prozedur auf ein unerwartetes Verhalten gestoßen. Die gespeicherte Prozedur (siehe unten) gibt "no docs found" zurück, aber die Sammlung, die die SELECT-Anweisung abfragt, enthält viele Dokumente. Verblüffend ist, dass die Ausführung der gleichen SELECT-Anweisung im Abfrage-Explorer dazu führt, dass ein einzelnes Dokument wie erwartet zurückgegeben wird. Fehle ich etwas wirklich Grundlegendes hier?Gespeicherte Azure DocumentDB-Prozedur gibt nichts zurück

function simple() { 
    var collection = getContext().getCollection(); 

    // Query documents and take 1st item. 
    var isAccepted = collection.queryDocuments(
     collection.getSelfLink(), 
     'SELECT TOP 1 * FROM MyCollection c', 
     function (err, feed, options) { 
      if (err) throw err; 

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

    if (!isAccepted) throw new Error("The query wasn't accepted by the server. Try again/use continuation token between API and script."); 
} 
+0

Nur neugierig: Haben Sie eine partitionierte Sammlung oder einzelne Partition Sammlung? –

+0

Ja, die Sammlung ist partitioniert. –

Antwort

0



Die sproc sieht gut aus. Ich habe das auf einer Sammlung mit ein paar Docs ausgeführt und der Sproc gibt 1 Doc wie erwartet zurück, also kann ich das nicht repro. Hier ist, was ich empfehlen:

  1. Versuchen Sie, auf einer kleinen Sammlung läuft
  2. Ändern der sproc so dass im Falle Futter leer ist, zusammen mit „keine Dokumente gefunden“, Rückkehr options.continuation und sehen, ob Fortsetzungs-Token ist leer oder nicht. Es könnte sein, dass die Abfrage vorweggenommen wurde, obwohl dies sehr unwahrscheinlich ist.

Danke!