2017-03-06 6 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 및 undefined를 모두 감싸는 UDF를 작성하고 쿼리 내에서 호출 할 수 있습니다.

  1. 는 이름으로 쿼리 내에서 다음 사용 CreateUserDefinedFunction
  2. 사용과 같은 IsMissing UDF를 등록합니다. 예를 들어, SELECT * FROM c WHERE udf.IsMissing(c.code) AND ...

여기 IsMissing의 간단한 구현이다 :

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

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

    return false; 
} 
+0

어떻게 작성하거나 쿼리 및 사용 방법에 UDF 함수를 주입하는 방법? 당신이 그것을 제안 할 수 있다면 그것은 상당한 것입니다. –