如何使用socket.io和带有sql server结果的cryptojs发出一个对象数组?

问题描述 投票:1回答:1

我正在尝试使用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
node.js sql-server socket.io cryptojs
1个回答
0
投票

要发射和加密数组或对象,你应该首先进行序列化,你可以像在代码中那样使用(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

© www.soinside.com 2019 - 2024. All rights reserved.