2

バイト配列データ全体をソケットからフェッチする必要があり、その後、それをデータベースに BLOB として挿入する必要があります。その構造で作業する必要があるため、バイト配列からデータをフォーマットしていない理由を聞かないでください。

バイト配列データを js 配列に格納しています。バッファオブジェクト内に格納しようとしましたが、バイト配列データをバッファに書き込もうとすると、変換できるためエラーが発生します。

私の質問は、js でバイト配列を操作する最も簡単な方法です。次のコードがあります。

var buff =[];
sock.on('data', function(data) {
    buff.push(data);
})

sock.on('end', function() {
    console.log(data) // [<Byte Array>,<Byte Array>, ...]
});

基本的に、データを [,, ...] ではなく [] として挿入したいと考えています。私の問題に対する最善の解決策は何ですか?

4

1 に答える 1

5

データベース インターフェイスによっては、JS 配列の各要素を個別のチャンクとしてストリーミングできる場合があります。

[更新] node.js は、多数Buffer.concat(...)のバッファーを単一のバッファーに連結する方法を提供するようになりました (基本的に、以下で説明する「buffertools」ライブラリーを置き換えます)。

var buffers = [];
sock.on('data', function(data) {
  buffers.push(data);
}).on('end', function() {
  var bytes = Buffer.concat(buffers); // One big byte array here.
  // ...
});

[オリジナル] あるいは、buffertoolsモジュールを使用して、すべてのチャンクを単一のバッファに連結することもできます。例えば:

var buffertools = require('buffertools');
var buff = new Buffer();
sock.on('data', function(data) {
  buff = buff.concat(data);
}).on('end', function() {
  console.log(buff); // <Byte Array>
});
于 2013-02-06T17:50:03.837 に答える