Node.js 如何使用socket.io和cryptojs在sql server结果中发出对象数组?
我正试图使用Socket.io发出一个数组,但出现了一个错误。下面是代码和错误。我对使用WebSocket还不熟悉,那么我该怎么做才能正确地发射它呢Node.js 如何使用socket.io和cryptojs在sql server结果中发出对象数组?,node.js,sql-server,socket.io,cryptojs,Node.js,Sql Server,Socket.io,Cryptojs,我正试图使用Socket.io发出一个数组,但出现了一个错误。下面是代码和错误。我对使用WebSocket还不熟悉,那么我该怎么做才能正确地发射它呢 var conn = new sql.ConnectionPool(dbConfig); var req = new sql.Request(conn); conn.connect(function(err){ if(err){ console.log("err"); return; } console.log('co
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 DOC:要发出并加密数组或对象,您应该首先进行序列化,您可以像在代码中那样使用(
JSON.stringify
)进行序列化,最后您需要使用.toString()
方法发出“纯文本”(由于序列化,现在是纯文本)
您的代码应该是:
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(resultado), 'secret key 123').toString();
io.emit("Data-from-server",ciphertext);
加密js文件: