2015-02-21 3 views
0

Я начинаю с node.js, и я бы попросил совета. Используя выбор из базы данных, я получаю требуемые данные (ID, здание, пол, карта). Карта хранится в формате jpg в виде байтового массива 0x89504E470D0A1A0A0000000D4948 .... Я сохраняю новый идентификатор базы данных, строя, пол и уменьшенную карту (где качество уменьшается с помощью https://www.npmjs.com/package/images), который теперь кодируется в Юникоде (http://puu.sh/g6UZ2/90408c7b12.png). Не могли бы вы посоветовать мне, как преобразовать карту уменьшенного размера в массив байтов, а затем сохранить ее в базе данных как BLOB. Спасибо и извините за мой английскийКодирование и сохранение изображений

var myQueryMaps2 = ' SELECT ' + 
'id, budova, patro, mapa ' + 
'FROM dbo.cis_mapyBudov'; 

app.get ('/ originalMaps', функция (Req, Рез) {

var request = new sql.Request(connection); 
request.query(' DELETE FROM dbo.cis_mapyNewBudov', function (err) { 
    if (err) { 
     console.log(err); 
    } 
}); 
request.query(myQueryMaps2, function (err, rows, recordset) { 
    if (!err && res.statusCode === 200) { 
     for (var i = 0; i < rows.length; i++) { 

      var insertSQL = "INSERT INTO dbo.cis_mapyNewBudov (id, budova, patro, mapa) VALUES ('" + rows[i].id + 
       "', '" + rows[i].budova + "', '" + rows[i].patro + "', '" + images(rows[i].mapa).toBuffer('jpg', {quality: 50}) + 
       "')"; 
      request.query(insertSQL, function (err) { 
       if (err) 
        console.log(err); 
       else 
        console.log('save'); 
      }); 
     } 
    } else { 
     console.log('error original maps', err); 
     throw new Error('Can not download original maps'); 
    } 
}); 

});

ответ

0

Используйте входные параметры, это почти всегда плохая идея для объединения значений в TSQL.

var request = new sql.Request(connection); 
request.input('id', rows[i].id); 
request.input('budova', rows[i].budova); 
request.input('patro', rows[i].patro); 
request.input('mapa', sql.VarBinary(MAX), images(rows[i].mapa).toBuffer('jpg', {quality: 50})); 
request.query('INSERT INTO dbo.cis_mapyNewBudov (id, budova, patro, mapa) VALUES (@id, @budova, @patro, @mapa)', function (err) { 
    // ... 
}); 

Подсказка: всегда создавайте new Request для каждого запроса. Именно так спроектирован драйвер. Повторное использование объекта Request может привести к неожиданному поведению.

Смежные вопросы