Uważam, że aby przeprowadzić wyszukiwanie „rozmyte”, musisz użyć wyrażenia regularnego. Powinno to osiągnąć to, czego szukasz (źródło funkcji escapeRegex tutaj):
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 });
}
});
}
}
Biorąc to pod uwagę, Twoja aplikacja może napotkać problemy z wydajnością podczas wykonywania zapytań o mongo przez wyrażenie regularne. Korzystanie z biblioteki takiej jak search-index do wyszukiwania może pomóc zoptymalizować wydajność aplikacji, z dodatkową korzyścią wynikającą z wyszukiwania rdzeni słów (takich jak zwracanie „znaleziono” z „znajdź”).
AKTUALIZACJA:Moja pierwotna odpowiedź zawierała proste regularne wyrażenie, które narażałoby Twoją aplikację na atak DDoS z wyrażeniami regularnymi. Zaktualizowałem „bezpieczne” wyrażenie regularne ze zmianą znaczenia.