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

GridFSを使用してNode.jsとMongooseを使用して画像を保存する方法

    私はここで最高評価の答えに満足していなかったので、新しいものを提供しています:npmを介してインストールできるノードモジュール「gridfs-stream」(そこに素晴らしいドキュメントがあります!)を使用することになりました。マングースと組み合わせると、次のようになります。

    var fs = require('fs');
    var mongoose = require("mongoose");
    var Grid = require('gridfs-stream');
    var GridFS = Grid(mongoose.connection.db, mongoose.mongo);
    
    function putFile(path, name, callback) {
        var writestream = GridFS.createWriteStream({
            filename: name
        });
        writestream.on('close', function (file) {
          callback(null, file);
        });
        fs.createReadStream(path).pipe(writestream);
    }
    

    pathは、ローカルシステム上のファイルのパスであることに注意してください。

    ファイルの読み取り機能については、私の場合、ファイルをブラウザにストリーミングする必要があります(エクスプレスを使用):

    try {
        var readstream = GridFS.createReadStream({_id: id});
        readstream.pipe(res);
    } catch (err) {
        log.error(err);
        return next(errors.create(404, "File not found."));
    }
    


    1. キーの命名規則を再確認しますか?

    2. mongodbの条件に一致するドキュメントとそのすべてのサブドキュメントをクエリします(springを使用)

    3. モンゴ固有のインデックスの大文字と小文字を区別しない

    4. MongoDBでデータベースを作成する