Javascript 不断获得;“未定义”;在GridFS中将readStream转换为字符串时

Javascript 不断获得;“未定义”;在GridFS中将readStream转换为字符串时,javascript,node.js,mongodb,http,gridfs,Javascript,Node.js,Mongodb,Http,Gridfs,我正在开发一个网站,该网站将图像存储在MongoDB GridFS数据库中,然后可以向用户显示所选图像之一。 上载部分已经在工作,但我在图像的下载部分遇到了问题,因为每当我尝试将readStream从数据库转换为字符串时,我的控制台中就会出现未定义的 我认为问题在于readStream部分,更具体地说,从readStream到字符串的转换。当我用writeStream替换readStream时,我能够下载一份完美的图像副本 然而,我不需要那个。我需要的是将图像发送到前端 我尝试了很多不同的想法,

我正在开发一个网站,该网站将图像存储在MongoDB GridFS数据库中,然后可以向用户显示所选图像之一。
上载部分已经在工作,但我在图像的下载部分遇到了问题,因为每当我尝试将readStream从数据库转换为字符串时,我的控制台中就会出现
未定义的

我认为问题在于readStream部分,更具体地说,从readStream到
字符串的转换。当我用writeStream替换readStream时,我能够下载一份完美的图像副本

然而,我不需要那个。我需要的是将图像发送到前端

我尝试了很多不同的想法,比如移动createServer和
MongoClient.connect
。我还尝试了不同的包,它们可以将
直接转换为
字符串

MongoClient.connect(dbURL, function(err, client){
    if(err) throw err;

    // setting db name
    var db = client.db("formImgs");

    // bucket to interact with GridFS
    bucket = new mongodb.GridFSBucket(db);

    // loop to upload each image
    for(var i = 0; i < fileNames.length; i++){
        // uploads to the database using file locations
        fs.createReadStream("photos/" + fileNames[i]).pipe(bucket.openUploadStream(fileNames[i]))
        .on("error", function(e){
            // error handling
            console.log(e);
        }).on("finish", function(){
            // success
            console.log("Done uploading!");
        });
    }

    const server = http.createServer((req, res) => {
        var readStream = fs.createReadStream("photos/LaptopRegistry.png");
        bucket.openDownloadStreamByName("LaptopRegistry.png").pipe(readStream);


        var bufs = [];
        //  THIS IS WHERE I THINK MY CODE MESSES UP
        readStream.on("data", function(chunk){
            bufs.push(chunk);
        }).on("end", function(){
            var fbuf = Buffer.concat(bufs);
            base64 = fbuf.toString("base64");
        });

        res.statusCode = 200;
        res.setHeader("Content-Type", "text/plain");
        fs.readFile("index.html", function(err, data) {
            res.writeHead(200, {"Content-Type": "text/html"});
            res.write(data);
            //insert use of base64 string here

        });
    });


    });
});
MongoClient.connect(dbURL,函数(err,客户端){
如果(错误)抛出错误;
//设置数据库名称
var db=client.db(“formigs”);
//bucket与GridFS交互
bucket=new mongodb.GridFSBucket(db);
//循环以上载每个图像
对于(var i=0;i{
var readStream=fs.createReadStream(“photos/LaptopRegistry.png”);
bucket.openDownloadStreamByName(“LaptopRegistry.png”).pipe(readStream);
var bufs=[];
//这就是我认为我的代码出错的地方
readStream.on(“数据”,函数(块){
推送(块);
}).on(“结束”,函数(){
var fbuf=缓冲液浓度(bufs);
base64=fbuf.toString(“base64”);
});
res.statusCode=200;
res.setHeader(“内容类型”、“文本/普通”);
readFile(“index.html”,函数(err,data){
res.writeHead(200,{“内容类型”:“text/html”});
res.write(数据);
//在此处插入base64字符串的用法
});
});
});
});