Подготовленный оператор не выполняется в узле js с mssql

1

После запуска кода все, что я получаю, это консольный журнал "Готово". Ничего не обновляется в базе данных. Что я делаю неправильно?

var pool = new sql.ConnectionPool(config);
var ps = new sql.PreparedStatement(pool);

ps.input('code', sql.VarChar);
ps.input('hex', sql.VarChar);

ps.prepare("UPDATE tHE_SetItem SET acPicture = CONVERT(varbinary(max), @hex, 2) WHERE acIdent = @code;", function(err) {

    async.mapSeries(hexes, function(pair, next) {

        ps.execute({code: pair.code, hex: pair.hex}, next);

    }, function(err) {

        ps.unprepare(function(err) {

            console.log("Done!");

        });
    });
});
  • 1
    Вы пробовали регистрировать err ? Очевидно, что выполняется обратный вызов ошибки, поэтому имеет смысл попробовать это.
  • 0
    @Script47 Script47 Блин ... Вы правы. Это то, что вы получаете за работу 12 часов подряд. Простые вещи проходят мимо вас. Спасибо за пощечину. Это привело меня к пониманию, что я на самом деле не соединяюсь с pool.connect()
Показать ещё 1 комментарий
Теги:
sql-server
asynchronous
prepared-statement

1 ответ

0

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

var pool = new sql.ConnectionPool(config);
pool.connect().then(function(){ // <------------- This in particular
    var i = 0;
    var ps = new sql.PreparedStatement(pool);
    ps.input('code', sql.VarChar);
    ps.input('hex', sql.VarChar);
    ps.prepare("UPDATE tHE_SetItem SET acPicture = CONVERT(varbinary(max), @hex, 2) WHERE acIdent = @code;", function(err) {
        if(err) console.log(err);
        async.mapSeries(hexes, function(pair, next) {
            i++;
            console.log(i + "/" + hexes.length + " " + Math.round(i / hexes.length * 100) + "% - " + pair.code);
            ps.execute({code: pair.code, hex: pair.hex}, next);
        }, function(err) {
            if(err) console.log(err);
            ps.unprepare(function(err) {
                if(err) console.log(err);
                console.log("Done!");
            });
        });
    });
}).catch(function (err) {
    console.log(err);
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню