2016-04-02 11 views
1

私はノードのアプリケーションでAzure DocumentDBにSQLのようなsytaxを使用しています。ここでAzure DocumentDBがサービスフィールドを返さないようにする

がDocumentDbは、サービス分野(_rid、_self、_etag、_ts、_attachments)をretrunしていないようにする方法はありメソッドのコード

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

と応答

[ 
{ 
    "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/" 
} 

]で、 select句に非サービスフィールドをすべて記述しないでください。

答えて

1

ちょうどクエリを使用して

を更新し、クエリを使用してシステム・フィールド以外が、SELECT句で、各システム以外のフィールドをリストアップすることなく、すべてのフィールドを取り戻す方法はありません。ただし、戻す前にフィルタリングするストアドプロシージャや、同じことをするためにUDFを使用するストアドプロシージャを使用することもできます(下記参照)。

更新

その他リストの復帰後にそれらを削除示唆しているが、いくつかのより多くの本について考えた後、クエリとシンプルなユーザー定義関数(UDF)でこれを行うことが可能である。

function stripUnderscoreFields (o) { 
    output = {}; 

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

は、このようなクエリでUDFを使用します。

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

node.jsのDocumentDB _Query Projections_を使用してこの問題を解決できないことは確かですか?私は.NETにしか慣れていません。 –

+0

フィールドを指定できる場合は、可能です。私はクエリプロジェクションに慣れていません(自己結合を意味しない限り)。その機能はDocumentDB自体ではなく.NET SDKにありますか?一般的には、node.jsユーザーがDocumentDBのユニークなdb-sideプログラミング機能を利用することをお勧めします。 Node.js/JavaScriptの開発者は、アプリケーションサーバーやブラウザから少しの労力でコードをdbに移動できます。彼らはnode.jsの中でsprocsのin-db実行をテストすることができます。彼らはnpmのパッケージ(いくつか)をsprocsにプッシュすることができます。それは彼らにとって非常に自然な環境です。 –

+0

DocumentDBクエリの予測については、https://azure.microsoft.com/en-us/documentation/articles/documentdb-sql-query/を参照してください。 –

0

AzureのDocumentDB REST APIによると、 Query Documentsの場合、これらのフィールドはシステムによって生成されます。ドキュメントのプロパティを知るには、APIドキュメントのResponse - Bodyセクションを参照してください。

Node.js用のDocumentDB SDKは、関連するREST APIをラップしたので、返さない場合は、コールバック関数でフィルタリングすることができます。

関連する問題