Я загрузил несколько файлов mp4 с одним и тем же именем ("dbVideo.mp4") в MongoDB, используя GridFSBucket.Однако, когда я пытаюсь загрузить самый последний файл mp4, который я загрузил с помощью .openDownloadStreamByName ("dbVideo.mp4"), он не передает последний загруженный файл с именем "dbVideo.mp4".
Я пытался вручную установить .openDownloadStreamByName с опцией "revision", т.е. {revision: -1}, но это не имело никакого эффекта.
const ytdl = require("ytdl-core");
require("dotenv").config();
var assert = require("assert");
var fs = require("fs");
var mongodb = require("mongodb");
var express = require("express");
const router = express.Router();
router.post("/convertURLToMP4", (req, res) => {
var videoMp4Stream = ytdl(req.body.YTUrl).pipe(
fs.createWriteStream("convertedVideo.mp4")
);
videoMp4Stream.on("finish", function() {
var uri = process.env.DB_ROUTE;
mongodb.MongoClient.connect(
uri,
{ useNewUrlParser: true },
function(error, db) {
assert.ifError(error);
var bucket = new mongodb.GridFSBucket(db, { bucketName: "videos" });
fs.createReadStream("convertedVideo.mp4")
.pipe(bucket.openUploadStream("dbVideo.mp4"))
.on("error", function(error) {
assert.ifError(error);
res.status(500).json({ error: "Internal server error" });
})
.on("finish", function() {
console.log("Video added the database!");
res.status(200).json({ status: "ok" });
fs.unlink("convertedVideo.mp4", function(err) {});
});
}
);
});
});
router.get("/streamMP4", (req, res) => {
var uri = process.env.DB_ROUTE;
mongodb.MongoClient.connect(
uri,
{ useNewUrlParser: true },
function(error, db) {
assert.ifError(error);
var bucket = new mongodb.GridFSBucket(db, { bucketName: "videos" });
bucket
.openDownloadStreamByName("dbVideo.mp4")
.pipe(fs.createWriteStream("outputVideo.mp4"))
.on("error", function(error) {
assert.ifError(error);
})
.on("finish", function() {
console.log("Downloaded video to Server!");
fs.createReadStream("outputVideo.mp4").pipe(res);
fs.unlink("outputVideo.mp4", function(err) {});
});
}
);
});
module.exports = router;
Ожидается:
Я ожидал, что .openDownloadStreamByName будет передавать по умолчанию самый последний файл с заданным именем, как указано в Документах .
Факт:
Поток загрузки - это всегда первое видео, которое я загрузил на mongodb.