node.js - 如何使用 socket.io 和 cryptojs 以及 sql server 结果发出对象数组?

标签 node.js sql-server socket.io cryptojs

我尝试使用 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

最佳答案

要发出和加密数组或对象,您应该首先进行序列化,您可以像在代码中那样使用 (JSON.stringify) 来执行此操作,最后您需要使用 .toString() 方法来发出“纯文本”(由于序列化,现在是纯文本)。

您的代码应该是:

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

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

关于node.js - 如何使用 socket.io 和 cryptojs 以及 sql server 结果发出对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55885858/

相关文章:

node.js - 如何使用 Google Calendar API 和 NodeJS 列出用户的可用日历

sql-server - BULK INSERT 失败,行终止符位于最后一行

sql - 自连接查询

ruby-on-rails - 如何在 Rails 中提供 socket.io 客户端文件

javascript - Node.js 的循环模块

angularjs - NodeJS OracleDB 绑定(bind)参数返回参数名称

sql-server - 如何使用保留顺序的运行计数形成查询

java - android中所有 Activity 的单一socket.IO连接

node.js - socket.io 加入房间的问题

node.js - 使用 websocket 将 Arduino 连接到 nodejs 服务器