при получении всех Modules, просто в поиске вбить таким образом, .../modules?language=...&sort=latest и тд
можно, но сделать это средствами ЯП
в фронт части, я при отправлении запроса добавляю queries, но они никак не влияют на результат
у тебя в объекте request, есть проперти query. Из него ты вытягиваешь sort, language и остальные поля, дальше создаешь хелпер для поиска по коллекции, в него передаешь findOptions и databaseOptions. function extractDatabaseOptions(query){ const validDatabaseOptions = ["sort", "select", "populate"] return Object.entries(query).reduce((acc,[property,value])=>if(property in validDatabaseOptions) acc[property] = value,{}) } тоже самое с findOptions, только экслюдишь от туда databaseOptions. Думаю мысль понятна
как я понял выполнять query на беке собственно, немного сложновато, я попробую конечно твой вариант, касаемо обработки кверис на беке я думал над таким вариантом, перед самой отправкой сделать проверку на кверис в request и если они есть сделать типо var query = {}; if(req.query.seats_remaining) query.seats_remaining = {$gte: {req.query.seats_remaining }};
не совсем понимаю просто, что за validaDatabaseOptions и функцию в ретурне
опции монги функция в ретурне, тебе формирует объект, благодаря которому ты сможешь создать обертку над find, обычно это репозиториями называется, которые один раз написаны и переиспользуются const query = Model.find(); if(databaseOptions.sort){ query.sort(sort); } if(databaseOptions.select){ query.select(select) } return query.exec()
Обсуждают сегодня