Проблемы с использованием представления couchbase с логическим параметром

У меня возникли проблемы с использованием функций карты couchbase с логическим ключом.

Я написал функцию карты с логическим параметром, но когда я пытаюсь использовать эту функцию, передавая значение "ложь" в качестве ключа, функция ничего не возвращает

Образец документа:

{
   "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":[]}]}

1 ответ

Решение

У вас возникла эта проблема из-за проверки, которую вы выполняете для doc.isSold перед оператором emit, проверка означает, что проходят только те документы, через которые проходит doc.isSold == TRUE.

Что вам нужно сделать, это проверить, что переменная была установлена, а не вычислять логическое значение:

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

Надеюсь, это поможет:)

Другие вопросы по тегам