バイナリの使用

BINARY文を使用して、フィールドをバイナリとして宣言できます。次に、フィールド値をbase64でエンコードされたバッファとして読み書きします。

すべてのフィールド値が同じサイズであることがわかっている場合、バイナリ・データ型より優先して固定バイナリを使用してください。固定バイナリは、配列のサイズを格納しておく必要がないため、コンパクトなストレージ形式です。固定バイナリ・データ型の詳細は、固定バイナリの使用を参照してください。

主キーがUIDで2番目のフィールドがバイナリ・フィールドを持つシンプルな2つのフィールドの表を定義するには、次の文を使用します。

CREATE TABLE myTable (
    uid INTEGER,
    myByteArray BINARY,
    PRIMARY KEY(uid)
) 

バイナリ値では、DEFAULTおよびNOT NULL制約はサポートされていません。

バイナリ・フィールドに書き込むには、base64でエンコードされたバイト配列を使用します。

   var file64 = new Buffer(fs.readFileSync('image.jpg'))
      .toString('base64');

   var row = { uid: 0,
               myByteArray: file64}
   store.put('myTable', row,
           function (err) {
                if (err)
                    throw err;
                else {
                    console.log("Row inserted.");
                }
           }); 

バイナリ・フィールドを読み取るには、任意のデータ・フィールドと同様に取得します。ここでは、ストア・オブジェクトをbase64でデコードし、メモリーに格納することなくディスクにストリーミングします。

次に例を示します。

   var primaryKey = {uid: 0};
   store.get('myTable', primaryKey,
           function (err, returnRow) {
                if (err)
                    throw err;
                else {
                    fs.writeFileSync('image-retrieved.jpg',
                        returnRow.currentRow.myByteArray, 
                        'base64');
                    store.close();
                }
           });