1

我在使用带有布尔键的沙发基础地图功能时遇到问题。

我写了一个带有布尔参数的映射函数,但是当我尝试使用这个函数传递值“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://localhost:8092/default/_design/tickets/_view/by_presentation_and_isSold?key=[false,"presentation_24e53b3a-db43-4d98-8499-3e8f3628a9c6"]

结果:

{"total_rows":10,"rows":[]}]}
4

1 回答 1

2

由于您在发出语句之前对 doc.isSold 进行了检查,因此您遇到了这个问题,检查意味着只有 doc.isSold == TRUE 的文档才能通过。

您需要做的是检查变量是否已设置,而不是评估布尔值:

function(doc, meta) { 
    if (doc.type == "ticket" && doc.isSold != null && doc.presentationId) { 
       emit([doc.isSold, doc.presentationId], null); 
    } 
}

希望有帮助:)

于 2014-01-24T17:04:03.863 回答