2016-04-02 13 views
1

Ich verwende SQL-ähnliche Syntax für Azure DocumentDB in der Knoten-App. Hier Methodencode istStellen Sie sicher, dass Azure DocumentDB keine Servicefelder zurückgibt

client.queryDocuments(collection._self, "SELECT * FROM root").toArray(function(err, results) { 
    if (err) { 
     callback(err); 
    } else { 
     callback(null, results); 
    } 
}); 

und Antwort

[ 
{ 
    "id": "test1", 
    "name": "Kate", 
    "email": "[email protected]", 
    "brands": [ 
     "AAAA", 
     "BBB", 
     "CCCi" 
    ], 
    "_rid": "WedNAN3lZgABAAAAAAAAAA==", 
    "_self": "dbs/WedNAA==/colls/WedNAN3lZgA=/docs/WedNAN3lZgABAAAAAAAAAA==/", 
    "_etag": "\"00001b00-0000-0000-0000-56fff6c60000\"", 
    "_ts": 1459615430, 
    "_attachments": "attachments/" 
} 

]

Gibt es eine Möglichkeit DocumentDb auszukommen retrun nicht Service-Felder (_rid, _self, _etag, _ts, _attachments), aber nicht alle Nicht-Service-Felder in Select-Klausel schreiben? mit

Nur eine Abfrage, gibt es keine Möglichkeit, um wieder alle Felder außer Systemfelder eine Abfrage verwenden, aber ohne dass jede einzelne nicht-Systemfeld in der SELECT-Klausel

Antwort

1

aktualisiert. Sie können dies jedoch mit einer gespeicherten Prozedur tun, die sie filtert, bevor sie eine UDF zurückgibt oder verwendet, um dasselbe zu tun (siehe unten).

aktualisieren

Andere haben vorgeschlagen, sie nach der Liste zurückkehrt zu entfernen, aber nach etwas mehr darüber nachgedacht, ist es möglich, dies mit einer Abfrage zu tun und eine einfache benutzerdefinierte Funktion (UDF):

function stripUnderscoreFields (o) { 
    output = {}; 

    for (key in o) { 
    value = o[key]; 
    if (key.indexOf('_') !== 0) { 
     output[key] = value; 
    } 
    } 
    return output 
} 

dann die UDF in einer Abfrage wie folgt verwendet werden:

SELECT VALUE udf.stripUnderscoreFields(c) FROM collection c 
+0

Sind Sie sicher, dass er/sie kann nicht lösen Sie dies mithilfe von DocumentDB _Query Projections_ in node.js, ich bin nur mit .NET vertraut und dort können Sie. –

+0

Wenn Sie die Felder angeben können, ist es möglich. Ich bin mit Query Projections nicht vertraut (es sei denn, Sie meinen Self Joins). Wird diese Funktionalität im .NET SDK und nicht in DocumentDB selbst gefunden? Im Allgemeinen ermutige ich node.js-Benutzer jedoch, die einzigartige db-side-Programmierfähigkeit von DocumentDB zu nutzen. Node.js/JavaScript-Entwickler können mit wenig Aufwand Code vom App-Server oder sogar vom Browser in die db verschieben. Sie können in-db Ausführung von Sprocs direkt innerhalb von node.js testen. Sie können npm-Pakete (einige) in ihre Sprocs schieben. Es ist eine sehr natürliche Umgebung für sie. –

+0

Siehe https://azure.microsoft.com/en-us/documentation/articles/documentdb-sql-query/ für DocumentDB-Abfrageprojektionen. –

0

nach dem Azure DocumentDB REST-API Query Documents, diese Felder werden vom System generiert, siehe Abschnitt Response - Body des API-Dokuments, um die Eigenschaften des Dokuments zu kennen.

Das DocumentDB-SDK für Node.js hat die zugehörigen REST-APIs umgebrochen, sodass Sie versuchen können, sie in der Callback-Funktion zu filtern, wenn Sie nicht zurückkehren möchten.

Verwandte Themen