У меня есть приложение, которое отображает сервисы, по которым я хотел бы, чтобы пользователь мог фильтровать по имени сервиса при постоянной сортировке (по убыванию) по дате (без сортировки по имени сервиса).
ТакжеСледующий вопрос не содержит соответствующего решения:
Фильтр Couch DB по ключу и сортировка по другому полю
Ниже приведен упрощенный вариант кода, чтобы дать представлениеиз того, что я сейчас пытаюсь (имя_службы должно быть первым ключом, так как я не могу фильтровать исключительно со вторым ключом):
function(doc) {
if(doc.type && doc.type=="incident"){
emit([doc.serviceName, doc.date], doc)
}
};
Вот фрагмент, где из моего API, написанного в Node, который строит параметры дляquery:
if (req.query.search !== "") {
const search = req.query.search;
params = {
limit: limit,
skip: skip,
startkey: [search+"Z"],
endkey: [search],
descending:true,
include_docs: true
};
} else {
params = { limit: limit, skip: skip, descending:true, include_docs: true };
Приведенный выше код в настоящее время фильтрует имя службы, но также сортирует по имени службы перед сортировкой по дате.Есть ли что-нибудь, что я могу добавить, например (проверьте фрагмент ниже), чтобы заставить запрос сортировать результаты по дате без необходимости делать это в коде после получения результата.
const sort = [{'date': 'desc'}];
То, что я хочу, эточто-то вроде этого при фильтрации по имени_службы:
SELECT * FROM incidents
WHERE serviceName LIKE @search+'%'
ORDER BY date DESC
Но при фильтрации не по имени_службы:
SELECT * FROM incidents
ORDER BY date DESC