Couchbase - 如果键的值为空(即长度为 0 ),则获取文档

Couchbase - get doc if value of key is empty (i.e. has length 0 )

我在 Couchbase 中有一个用于检索数据的视图。简化后,我的数据桶包含:

{
    "id" : 123,
    "key" : "some value"
},
{
    "id" : 456,
    "key" : ""
}
...

我想获取所有存在 'key' 但其值为空的文档。

如果我使用这样的视图:

function (doc, meta) {
  if(doc.key)
    emit([doc.id], doc);
}

如果我使用这样的视图,我会得到上面的两个 JSON:

function (doc, meta) {
  if(doc.key && doc.key == "")
    emit([doc.id], doc);
}

我得到了 none 个。 我想获得 id = 456 的 json。正确的语法是什么?

那是因为空字符串在javascript

中是假的
~ $ node 
> var x = ""
undefined
> x
''
> if (x && x == "") { console.log("it is empty") }
undefined
> if (x) { console.log("it is empty") }
undefined
> if (!x) { console.log("it is empty") }
it is empty
undefined

你应该使用

if(doc.key === "")

三等号会更严格地将其与字符串进行比较