Вярвам, че за да правите "размито" търсене, ще трябва да използвате регулярен израз. Това трябва да постигне това, което търсите (източник на функцията escapeRegex тук):
function escapeRegex(text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
};
router.get("/", function(req, res) {
if (req.query.search) {
const regex = new RegExp(escapeRegex(req.query.search), 'gi');
Jobs.find({ "name": regex }, function(err, foundjobs) {
if(err) {
console.log(err);
} else {
res.render("jobs/index", { jobs: foundjobs });
}
});
}
}
Като се има предвид това, вашето приложение може да срещне проблеми с производителността при запитване на mongo чрез регулярен израз. Използването на библиотека като search-index за търсене може да помогне за оптимизиране на производителността на вашето приложение, с допълнителната полза от търсенето на думи (като връщане на „found“ от „find“).
АКТУАЛИЗАЦИЯ:Първоначалният ми отговор включваше просто редовно изражение, което би оставило приложението ви уязвимо за DDoS атака с регулярни изрази. Актуализирах с "безопасен" екраниращ регулярен израз.