Почему запрос documentdb возвращает данные с неопределенным или пустым значением?
Я использую documentdb и выполняю запрос documentdb. мой пример запроса выглядит так:
studentQuery = {
query: 'SELECT * FROM root r WHERE (r.userid=@userid OR r.code=@code) AND r.collectionName="students"',
parameters: [{
name: '@userid',
value: userid
}, {
name: '@code',
value: code
}]
};
Теперь проблема в том, что, если я передаю только userid="piyush123" и code= "", то он возвращает мне все те записи, которые имеют пустое значение code= "", если код не определен, хотя он возвращает все те документы, которые не ' не содержать код.
Вскоре я не хочу те записи, которые имеют нулевую или пустую строку или неопределенное значение, я могу разрешить его с помощью IS_DEFINED, IS_NULL, NOT IS_NULL
своего рода ключевые слова, но я не хочу использовать его во всех запросах, потому что это усложняет структуру моего запроса, поэтому я хочу применить его сразу, чтобы не беспокоиться обо всех видах проверок везде, которые могут уменьшить мои усилия.
1 ответ
Вы можете написать UDF, который охватывает все регистры - пустую строку, null и undefined и вызывать это в запросе.
- Зарегистрировать
IsMissing
UDF, как показано ниже, используя CreateUserDefinedFunction - Используйте в запросе по имени. Например,
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;
}