Node.js - динамическое добавление нескольких параметров с использованием пакета MSSQL - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь написать функцию, которая заботится обо всех моих запросах, которые я выполняю к базе данных, однако я изо всех сил пытаюсь найти способ динамически добавлять параметры в мой запрос.

Все NPMДокументация, несколько бесполезная, содержит нединамические примеры добавления параметров (https://www.npmjs.com/package/mssql).

Пример документации NPM:

function runStoredProcedure() {
    return pool2.then((pool) => {
        pool.request() // or: new sql.Request(pool2)
        .input('input_parameter', sql.Int, 10)
        .output('output_parameter', sql.VarChar(50))
        .execute('procedure_name', (err, result) => {
            // ... error checks
            console.dir(result)
        })
    });
}

Моя реализация выглядит так

// promise style:
const pool2 = new sql.ConnectionPool(config, err => {
    // ... error checks
});

pool2.on('error', err => {
    // ... error handler
})

function runStoredProcedure(res, proc, sqlParams) {
    return pool2.then((pool) => {
        pool.request() // or: new sql.Request(pool2)
        .input('input_parameter', sql.Int, 10) //
        .execute(proc, (err, recordset) => {
            // ... error checks
            res.json(recordset[0]);
        })
    });
}

В идеале я хотел бы объявить pool.request () и затем foreach для своих параметров.

Я подумал, что этот вопрос будет полезно опубликовать, так как в реальных случаях использования пакета mssql будет динамически добавляться параметр,несмотря на примеры, приведенные в документации.

1 Ответ

0 голосов
/ 05 марта 2019

pool.request возвращает объект запроса.Вам не нужно использовать свободный API, но вы можете игнорировать возвращаемое значение каждого input вызова и просто вызывать их отдельно:

function runStoredProcedure(res, proc, sqlParams) {
    return pool2.then((pool) => {
        const req = pool.request();
        sqlParams.forEach(function(param) {
            req.input(param.name, param.type, param.value);
        });
        req.execute(proc, (err, recordset) => {
            // ... error checks
            res.json(recordset[0]);
        });
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...