Мне нужно написать запрос, который работает как автозаполнение для поиска местоположения. Заявление else отлично подходит для поиска нужной страны, но когда пользователь пишет «Германия, Берлин», например, алгоритм подбрасывает другие страны, которые могут иметь город под названием «Берлин». Мне нужно его искать только города, которые расположены, например, «Германия».Поиск регулярного выражения Mongoose с двумя условиями
Просто, чтобы прояснить, переменная флага переходит в истину, когда в строке параметров поиска есть запятая. Затем он разбивается в стране и городе.
if(flag){
World.findOne().or([{name:{$regex:country}},{cities: {$regex:city}}]).exec(function (err, users) {
if (err) return console.error(err);
console.log(users);
res.send(users);
});
}else{
World.findOne({name:{$regex:val}}, {cities: {$slice: 10}}).exec(function (err, users) {
if (err) return console.error(err);
console.log(users);
res.send(users);
});
}
Я попробовал это, как хорошо, но это вызывает ошибку компиляции:
if(flag){
World.findOne({{country:{$regex:country}},{cities: {$regex:city}}}).exec(function (err, users) {
if (err) return console.error(err);
console.log(users);
res.send(users);
});
Пробовал то же самое с удалением внешних скобок в findOne()
Что ошибка вы получаете? – abdulbarik
На втором втором коде я получаю World.findOne ({{country: {$ regex: country}}, {cities: {$ regex: city}}}). Ex ^ SyntaxError: Неожиданный токен { –