Создать запрос на основе входных данных от пользователя - PullRequest
0 голосов
/ 27 марта 2020

Допустим, я выполняю поиск по базе данных

router.post('/searchLoads', ensureAuthenticated, async (req, res) => {
var{ agentCode, loadNumber, pickupNumber, pickupDate } = req.body});

Пользователь не обязан заполнять все поля. Как бы я построить запрос на основе операторов if? Я пробовал что-то вроде

result = 'await Load.find({';
    if (agentCode !== undefined){
        result += "agentCode: agentCode, ";
    }
    if(loadNumber !== undefined){
        result += "loadNumber: loadNumber, ";
    }
    if(pickupNumber !== undefined){
        result += "pickupNumber: pickupNumber, ";
    }
    if(pickupDate !== undefined){
        result += "pickupDate: pickupDate, ";
    }
    result += "})";

Но я не уверен, как запустить код после того, как я создал запрос. Есть ли более простой способ сделать это?

1 Ответ

1 голос
/ 27 марта 2020

Вместо создания строки вы можете создать объект.

Предполагая, что мы используем ES6 +, мы можем использовать agentCode вместо agentCode: agentCode при инициализации полей.

var options = {
    agentCode,
    loadNumber,
    pickupNumber,
    pickupDate,
};

result = await Load.find(options);

Проверки !== undefined не обязательны, поскольку поля undefined будут удалены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...