我在使用带有布尔键的couchbase map函数时遇到了问题。
我用布尔参数写了一个map函数,但是当我尝试使用这个函数传递值“false”作为键时,函数不返回任何内容
示例文档:
{
"name": "lorem ipsum",
"presentationId": "presentation_24e53b3a-db43-4d98-8499-3e8f3628a9c6",
"fullPrice": 8,
"isSold": false,
"buyerId": null,
"type": "ticket",
}
地图功能:
function(doc, meta) {
if (doc.type == "ticket" && doc.isSold && doc.presentationId) {
emit([doc.isSold, doc.presentationId], null);
}
}
的http://本地主机:8092 /默认/ _design /车票/ _view / by_presentation_and_isSold键= [假 “presentation_24e53b3a-db43-4d98-8499-3e8f3628a9c6”]
结果:
{"total_rows":10,"rows":[]}]}
答案 0 :(得分:2)
由于你在emit语句之前对doc.isSold进行的检查,你遇到了这个问题,检查意味着只有doc.isSold == TRUE的文件正在通过。
您需要做的是检查变量是否已设置而不是评估布尔值:
function(doc, meta) {
if (doc.type == "ticket" && doc.isSold != null && doc.presentationId) {
emit([doc.isSold, doc.presentationId], null);
}
}
希望有所帮助:)