2017-11-16 8 views
0

BufferをNode.jsとともにMySQLに保存するには?
私が知っている方法の1つは、Bufferに変換して、という16進文字列をMySQLにCHARという名前で保存することです。しかし、に変換するのは、をMySQLに保存した後に行うことをお勧めしますか?Node.jsバッファをMySQLに保存するためのベストプラクティス

Buffer(バイト配列)をMySQLにNode.jsで直接保存する方法はありますか?たとえば、BLOBをMySQLで使用しますか?

実際にどのような方法で使用しても問題ありません。

答えて

1

私はベストプラクティスを知らない。しかし私は私のために働くものを共有することができます。

私がオブジェクトを扱っている場合は、longtextカラムにbase64(文字数の長さをbase16より短くする)を格納してgzipとして保存することをお勧めします。

バッファーとして保存すると、それらをデータベースからコピーする方法がないと思うので、それらを文字列として保存すると便利です(実際にはトラブルシューティングに役立つことがあります)。あなたのオブジェクトにそれらを翻訳してください - 少なくとも、私はそれを行う方法を見つけていません。例えば

(そうでない場合はnew Buffer()を使用し、Buffer.from()構文についてNodejs 6+を想定):

const obj = {}; 
const zip = zlib.gzipSync(JSON.stringify(obj)).toString('base64'); 

そして、アンドゥ:

const originalObj = JSON.parse(zlib.unzipSync(Buffer.from(zip, 'base64'))); 

longtextは〜4GiBに等しいので、あなたがヒットべきではありませんあなたが大量のオブジェクトを持っていない限り、制限です。しかし、あなたは他の場所で効率の問題があると思います。

注:明らかに、1つの行にパックされています(つまり、zip、解析、バッファなど)。

1行でロットが失敗する可能性があります。

ですので、適切に処理してください。

関連する問題