Проблемы с использованием представления 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);
}
}
Надеюсь, это поможет:)