1

ブールキーでcouchbaseマップ関数を使用すると問題が発生します。

ブール値パラメーターを使用してマップ関数を作成しましたが、値「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

この問題は、emit ステートメントの前に 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 に答える