Как я могу создать массив объектов, используя socket.io и cryptojs с результатами сервера sql? - PullRequest
1 голос
/ 28 апреля 2019

Я пытаюсь создать массив с помощью Socket.io, но получаю ошибку.Код и ошибка ниже.Я новичок в использовании WebSockets, так что я могу сделать, чтобы испустить это правильно?

var conn = new sql.ConnectionPool(dbConfig);
var req = new sql.Request(conn);
 conn.connect(function(err){
  if(err){
    console.log("err");
    return;
  }
  console.log('conectou')
  let vend = 'AUGUSTO'
  req.query(`select * from aca_visitas where cd_vend = '${vend}' and 
     dt_visita >= '2019-03-01'`, 
  function(err, array){

    if(err)
    {
      console.log("err db");
    }
    else{
      let resultado = array.recordset
      console.log(resultado)
      var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(resultado), 
          'secret key 123');
      io.emit("Data-from-server",ciphertext);
}

Ошибка:

C:\Trabalho\Projetos\MobSupervisor\TargetMobSupervisor\Prototipo\Retaguarda\node_modules\has-binary2\index.js:30
function hasBinary (obj) {
                   ^

RangeError: Maximum call stack size exceeded

1 Ответ

0 голосов
/ 30 апреля 2019

Чтобы сгенерировать и зашифровать массив или объект, вы должны сначала выполнить сериализацию, вы можете сделать это с помощью (JSON.stringify), как вы это делали в своем коде, и, наконец, вам нужно добавить метод .toString() для генерации "обычный текст" (теперь это обычный текст из-за сериализации).

Ваш код должен быть:

var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(resultado), 'secret key 123').toString();
io.emit("Data-from-server",ciphertext);

Crypto-js DOC: https://www.npmjs.com/package/crypto-js

...