Ответ GridFS, возвращающий несколько изображений - PullRequest
0 голосов
/ 21 апреля 2019

Я работаю над веб-приложением, которое включает загрузку изображений в БД с помощью GridFS. Я получил загрузку на работу, однако всякий раз, когда я пытаюсь загрузить загруженные файлы, полученный ответ состоит из нескольких изображений. Я просто хочу получить один. Как бы это исправить?

Если это поможет, я использую GridFS, Mongoose, gridfs-stream и Express.

РЕДАКТИРОВАТЬ: я пытался загрузить изображение, которое я получил, и то, что загрузили, были двумя изображениями вместо одного, который я хочу.

mongoose.connect("mongodb://localhost:27017/formImgs", { useMongoClient: true });

var conn = mongoose.connection;
Grid.mongo = mongoose.mongo;

conn.once("open", () => {
    var gfs = Grid(conn.db);

    for(var i = 0; i < fileNames.length; i++){
        var filesrc = path.join(__dirname, "./photos/" + fileNames[i]);

        var writeStream = gfs.createWriteStream({
            filename: fileNames[i],
            contentType: "image/png"
        });

        fs.createReadStream(filesrc).pipe(writeStream);

        writeStream.on("close", (file) => {
            console.log("Done uploading!");
        });
    }

    app.get("/", (req, res) => {
        gfs.files.findOne({filename: "LaptopRegistry.png"}, (err, file) => {
            var readStream = gfs.createReadStream(file.filename);
            readStream.pipe(res); // Multiple images are returned when I use this
        });
    });

    app.get("/image/:filename", (req, res) => {
        gfs.files.findOne({filename: "LaptopRegistry.png"}, (err, file) => {
            var readStream = gfs.createReadStream(file.filename);
            return res.json(file); // i get only one JSON when I run this
        });
    });

    app.listen(5000, () => console.log("Server started on port 5000"));
});

...