sql >> データベース >  >> NoSQL >> MongoDB

バイナリデータをbase64(Gridfs-stream)に変更するのに行き詰まりました

    また、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);
    });
    


    1. 配列サイズのフィールドをmongoに挿入します

    2. マングースをコンパイルするとモデルを上書きできません

    3. MongoDBの削除が非常に遅い

    4. 範囲でフィルターを再分割し、最初に10を並べ替えて返します