また、gridfsから画像を読み取るためのソリューションを探しており、grid-fs strem
を使用しています。これは私が見つけた解決策です。お役に立てば幸いです。
//gridfsを設定します
import mongoose from 'mongoose';
import Grid from 'gridfs-stream';
const db = mongoose.connection.db;
const mongoDriver = mongoose.mongo;
const gfs = new Grid(db, mongoDriver);
//画像をmongoに書き込みます
const writeStream = gfs.createWriteStream({
filename: 'test.png',
content_type: 'image/png',
});
fs.createReadStream(filePath).pipe(writeStream);
writeStream.on('close', (gfsFile) => {
// remove the original file
fs.unlink('test.png');
// this is the information, and _id is the id
console.log(gfsFile);
});
//画像をmongoに読み取ります
const readstream = gfs.createReadStream({
_id: id,
});
const bufs = [];
readstream.on('data', function (chunk) {
bufs.push(chunk);
});
readstream.on('end', function () {
const fbuf = Buffer.concat(bufs);
const base64 = fbuf.toString('base64');
console.log(base64);
});