2017-03-06 4 views
0

documentdb & documentdbを実行しているdocumentdbを使用しています。私のサンプルクエリは次のようになりますされていますdocumentdbクエリが、未定義または空の値のデータを返すのはなぜですか?

studentQuery = { 
     query: 'SELECT * FROM root r WHERE ([email protected] OR [email protected]) AND r.collectionName="students"', 
     parameters: [{ 
      name: '@userid', 
      value: userid 
     }, { 
      name: '@code', 
      value: code 
     }] 
    }; 

今の問題は、「「=それは私のコードを持っているすべてのそれらのレコードを返して、」私は唯一のユーザーID =「piyush123」とコード=」を渡していた場合、その空の値でありますコードが定義されていない場合は、コードを含まないドキュメントをすべて返します。

まもなく、nullまたは空の文字列または未定義の値を持つレコードは欲しくないので、IS_DEFINED, IS_NULL, NOT IS_NULL種類のキーワードで解決できますが、すべてのクエリでそれを使用したくないため、複雑な構造になっているので、私は一度にそれを適用したいので、私の努力を減らすことができるあらゆる種類の小切手については心配してはいけません。

答えて

1

空の文字列、nulls、および未定義のすべてのケースをラップするUDFを作成し、クエリ内で呼び出すことができます。

  1. 名前でクエリ内CreateUserDefinedFunction
  2. 使用を使用して、次のようなIsMissing UDFを登録します。例えば、SELECT * FROM c WHERE udf.IsMissing(c.code) AND ...

はここISMISSINGの単純な実装です:クエリ&どのようにそれを利用するにはUDF関数を作成または注入する

function isMissing(doc, prop) { 
    if (typeof doc[prop] === "undefined") { 
    return true; 
    } 

    if (doc[prop] === "" || doc[prop] === null) { 
    return true; 
    } 

    return false; 
} 
+0

どのように?あなたはそれが相当なことを示唆することができます。 –

関連する問題