バイナリの使用
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();
}
});