Сделать параметры запроса необязательными? - PullRequest
0 голосов
/ 05 ноября 2019

Я использую msSqlConnecter с утомительным. У меня есть запрос, который фильтрует на основе параметров, предоставленных интерфейсом. Я хотел бы, чтобы параметры были необязательными и позволяли пользователям не предоставлять их или предоставлять только один из двух. Есть ли способ поместить оператор if, основанный на существовании field2?

Я получаю следующую ошибку:

RequestError: Ошибка проверки для параметра 'field2'. Неверный номер.

Код:

var thequery1 = `SELECT country
                        ,sales 
                        ,[Units Sold] as sold
                        ,thedate
                 FROM financial
                 WHERE 1 = 1
                   AND country = @field1
                   AND [Units Sold] > @field2`;

Promise.all([queryTablewithPararams(thequery1, req.body.field1, req.body.field2)])
        .then(
            data => res.json(data)
        );

function queryTablewithPararams(thequery1, field1, field2) {
    return new Promise(function(resolve, reject) {
        var con = new msSqlConnecter.msSqlConnecter(config);
        con.connect().then(function() {
            new con.Request(thequery1)
                .addParam("field1", TYPES.VarChar, field1)
                .addParam("field2", TYPES.Int, field2)
                .onComplate(function(count, datas) {
                    resolve(datas);
                }).onError(function(err) {
                    console.log(err);
                }).Run();
        }).catch(function(ex) {
            console.log(ex);
        });
    });
}

1 Ответ

0 голосов
/ 05 ноября 2019

Просто подтвердите field2 перед отправкой в ​​качестве параметра

if (isNaN(field2) || field2 == null) { field2 = 0; }

   function queryTablewithPararams(thequery1, field1, field2) {
        if (isNaN(field2) || field2 == null) { field2 = 0; }
        return new Promise(function(resolve, reject) {
            var con = new msSqlConnecter.msSqlConnecter(config);
            con.connect().then(function() {
                new con.Request(thequery1)
                    .addParam("field1", TYPES.VarChar, field1)
                    .addParam("field2", TYPES.Int, field2)
                    .onComplate(function(count, datas) {
                        resolve(datas);
                    }).onError(function(err) {
                        console.log(err);
                    }).Run();
            }).catch(function(ex) {
                console.log(ex);
            });
        });
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...