为什么 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 - 空字符串、空值和未定义,并在查询中调用它。

  1. 使用 CreateUserDefinedFunction
  2. 注册一个 IsMissing UDF,如下所示
  3. 在查询中按名称使用。例如,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;
}