最近、FirebaseのCloudFirestoreを勉強中のエンジニアです。
Firestoreの保存形式にバイナリーBLOBが合ったので気になって試してみました。
CloudStorageを使うまでもない小さなサムネイルを保存するときに使うのかなと。
const fs = require("fs");
const firebase = require("firebase");
// 保存先のドキュメントの取得
const userRef = await db.doc('/users/' + UID);
// 保存する画像の読み込み
const icon = fs.readFileSync("icon.png");
// blobに変換
const blob = firebase.firestore.Blob.fromUint8Array(icon);
const img = {img : blob};
// firestoreに保存
await userRef.set(img, { merge: true }).catch(error => console.log(error));
// 下記は保存したデータの取得
const userSnapshot = await userRef.get();
const userImg = userSnapshot.data()['img'];
console.log(userImg.toBase64());
注意するべき点
Firestoreには1ドキュメント 1MiBの制限があるので、保存する画像のサイズは注意が必要です。