import express from "express"; import * as services from "../services/services.js"; import Restaurant from "../models/restaurant.js"; import sanitizer from "string-sanitizer"; import restaurant from "../models/restaurant.js"; var router = express.Router(); // SEARCH RESTAURANTS BY NAME OR CITY router.get("/", (req, res) => { if (req.query.string.length > 0) { const query = sanitizer.sanitize.keepUnicode(decodeURI(req.query.string)); const regex = new RegExp(query, "i"); Restaurant.find( { $and: [ { $or: [{ city: { $regex: regex } }, { name: { $regex: regex } }] }, { hidden: false }, ], }, "_id name city imgUrl workingHours description tags phone hidden", (err, results) => { if (err) { res.sendStatus(500); } else { res.send(results); } } ); } else { res.send({ results: [], }); } }); // AUTOCOMPLETE router.get("/autocomplete/", (req, res) => { if (req.query.string.length > 0) { var query = sanitizer.sanitize.keepUnicode(decodeURI(req.query.string)); const regex = new RegExp(query, "i"); let cities = new Set(); let restaurants = new Set(); Restaurant.find( { $or: [{ city: { $regex: regex } }, { name: { $regex: regex } }] }, "name city", (err, doc) => { if (err) { res.sendStatus(404); } else { doc.forEach((value) => { cities.add(value.city); restaurants.add(value.name); }); res.send({ cities: Array.from(cities), restaurants: Array.from(restaurants), }); } } ).limit(5); } else { res.send({ cities: [], restaurants: [], }); } }); export default router;