Могу ли я сделать запросы в MongoDB find () - Функция с созданными строками - PullRequest
0 голосов
/ 15 февраля 2020

Я только изучаю программирование веб-приложений и у меня есть вопрос, касающийся MongoDB и использования MongoDB в приложении Node-Server. У меня есть база данных MongoDB с ресторанами в Нью-Йорке и веб-сайт, где пользователь может искать рестораны в разных районах и с нужным типом кухни. Я отправляю запрос на получение Ajax на сервер, где я хочу найти подходящие рестораны в базе данных MongoDB. Поскольку пользователь может искать в нескольких районах, я попытался создать оператор запроса в функции.

function createQuery(boroughs, cuisine){
    let query = "";
    if(!boroughs){
        query += `'cuisine': ${cuisine}`;
    }else if(!cuisine){
        for(let i =0; i< boroughs.length - 1; i++){
            query+= `'borough': '${boroughs[i]}',`;            
        }
       query+=`${boroughs[boroughs.length-1]}`
    }else{
        s+=`{$and:[{`;
        for(let i =0; i< boroughs.length-1;i++){
            query+= `'borough': '${boroughs[i]}',`;
        }
        query+=`'borough': '${boroughs[boroughs.length-1]}'},{'cuisine':'${cuisine}'}]}`;
    }
    return query;
}
Я думаю, что функция работает, и я получаю требуемый запрос в виде строки. Затем я передаю запрос функции поиска MongoDB:

let searchInstruction = createQuery(req.query.boroughs, req.query.cuisine);
    console.log(searchInstruction);
    let result ="";
    result = dbs.collection('restaurants').find(searchInstruction).toArray(function (err, result){        
    console.log(JSON.stringify(result));
    res.send(JSON.stringify(result));
    });

Моя проблема в том, что независимо от того, какие параметры поиска у меня есть в журнале, результаты всегда являются всей базой данных. Мне интересно, если невозможно передать строку в .find () - Функция в Mon go -DB. Например, когда я ищу параметры Borough = Manhattan, Brooklyn, Staten Island с итальянской кухней, мой поисковый запрос ie:

{$and:[{'borough': 'Manhattan','borough': 'Brooklyn','borough': 'Staten Island'},{'cuisine':'Italian'}]}
Что я передаю в функциях find-получения неправильных результатов, и когда я использую точно такой же запрос в MongoShell, результаты хороши.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...