мангуст + экспресс
//Model const Item = require(./model/ItemSchema) //API app.get('/api/items', (req, res) => { //here we get all query and define const page = req.query.page || 1; const limit = req.query.limit || 10; const sortField = req.query.sortField; const sortOrder = req.query.sortOrder === 'asc' ? 1 : -1; const filter = req.query.filter; const search = req.query.search; const query = {}; //here we need to in query obj if query is filter or search if (filter) { query.field = filter; } if (search) { query.$text = { $search: search }; } Item.find(query) .sort({ [sortField]: sortOrder }) .skip((page - 1) * limit) .limit(limit) .exec((err, items) => { if (err) { return res.status(500).send(err); } return res.send(items); }); });
Этот код добавляет параметр поискового запроса к конечной точке API и использует его для фильтрации результатов запроса к базе данных с помощью оператора $text. Этот оператор позволяет выполнять текстовый поиск по строковым полям в базе данных и возвращает только те документы, которые соответствуют поисковому запросу.
Вы также можете использовать другие операторы, например оператор $regex, для выполнения расширенного поиска по вашим данным. Например:
if (search) { query.field = { $regex: search, $options: 'i' }; }
Этот код использует оператор $regex для выполнения поиска без учета регистра в поле «поле» ваших документов и возвращает все документы, соответствующие поисковому запросу
Спасибо:)