我在Couchbase中有一个View用于检索我的数据。简化,我的数据桶包含:
{
"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);
}
我没有得到任何一个。 我想得到id = 456的json。正确的语法是什么?
答案 0 :(得分:0)
这是因为javascript中的空字符串为false
~ $ 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 === "")
Triple equals会将它与字符串更严格地进行比较