为什么 documentdb 查询 returns 未定义或空值的数据?
Why documentdb query returns data which is undefined or empty value?
我正在使用 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="" 空值的记录,如果代码未定义的话returns 所有不包含代码的文档。
不久我不想要那些具有空字符串或空字符串或未定义值的记录,我可以通过 IS_DEFINED, IS_NULL, NOT IS_NULL
类关键字来解决它,但我不想在所有查询中都使用它 '导致它使我的查询结构变得复杂,所以我想一次应用它,所以我不应该为任何地方的各种检查而烦恼,这会减少我的工作量。
您可以编写一个包装所有情况的 UDF - 空字符串、空值和未定义,并在查询中调用它。
- 使用 CreateUserDefinedFunction
注册一个 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;
}
我正在使用 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="" 空值的记录,如果代码未定义的话returns 所有不包含代码的文档。
不久我不想要那些具有空字符串或空字符串或未定义值的记录,我可以通过 IS_DEFINED, IS_NULL, NOT IS_NULL
类关键字来解决它,但我不想在所有查询中都使用它 '导致它使我的查询结构变得复杂,所以我想一次应用它,所以我不应该为任何地方的各种检查而烦恼,这会减少我的工作量。
您可以编写一个包装所有情况的 UDF - 空字符串、空值和未定义,并在查询中调用它。
- 使用 CreateUserDefinedFunction 注册一个
- 在查询中按名称使用。例如,
SELECT * FROM c WHERE udf.IsMissing(c.code) AND ...
IsMissing
UDF,如下所示
下面是 IsMissing 的简单实现:
function isMissing(doc, prop) {
if (typeof doc[prop] === "undefined") {
return true;
}
if (doc[prop] === "" || doc[prop] === null) {
return true;
}
return false;
}