Построить запросы в пн goose + node.js - PullRequest
0 голосов
/ 25 января 2020

Я новичок в Node.js и MongoDB, и у меня возникают проблемы при сборке запросов.

Например, я хочу отфильтровать дату моего объекта в зависимости от запроса. Вот что я сделал:

var startDate = req.body.startDate;
var endDate = req.body.endDate;

let findParams = {
    userId:req.userId
};
if(startDate){
    findParams["start"] = { $gt: new Date(startDate)};
}
if(endDate){
    findParams["start"] = { $lt: new Date(endDate)};
}
if(startDate && endDate){
    findParams["start"] = { $gt: new Date(startDate),$lt: new Date(endDate)};
}
console.log(findParams);
WorkTime.find(findParams)

Мне приходится каждый раз создавать параметр «запуска» в зависимости от того, что отправляет пользователь. Если пользователь отправляет оба значения (startDate & endDate), я должен снова построить объект params.

Каков оптимальный способ построения этого запроса?

Заранее спасибо!

1 Ответ

0 голосов
/ 25 января 2020

Ваш код в порядке. Не существует «оптимального» способа, но немного «элегантного» * ​​1001 *

try {
    var startDate = req.body.startDate;
    var endDate   = req.body.endDate;

    let findParams = {
        userId: req.userId
    };

    if (startDate || endDate) {
        findParams["start"] = { };

        if (startDate) {
            findParams["start"]["$gt"] = new Date(startDate);
        }

        if (endDate) {
            findParams["start"]["$lt"] = new Date(endDate);
        }
    }

    console.log(findParams);
    WorkTime.find(findParams)
} (catch e) {
    console.log("Error occured: " + e);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...