Есть ли лучшая реализация для извлечения файлов в монго и узле js, которая использует сетку fs? Основываясь на моем текущем коде, приведенном ниже, я извлек файлы, а затем извлек фрагменты, а затем получился фрагмент, используя формат данных URI. Есть ли лучшая реализация, чем мой текущий код? причина, по которой base64 загружается слишком долго, что делать, если я восстановил 100 файлов? Есть ли лучший способ извлечения файлов и фрагментов, который лучше и намного быстрее, чем моя текущая реализация? чем base64? Спасибо.
Реализация моего кода
collection.find({ filename: req.params.filename }).toArray(function (err, docs) {
if (err) {
return res.render('index', {
title: 'File error',
message: 'Error finding file',
error: err.errMsg
});
}
if (!docs || docs.length === 0) {
return res.render('index', {
title: 'Download Error',
message: 'No file found'
});
} else {
//Retrieving the chunks from the db
collectionChunks.find({ files_id: docs[0]._id })
.sort({ n: 1 }).toArray(function (err, chunks) {
if (err) {
return res.render('index', {
title: 'Download Error',
message: 'Error retrieving chunks',
error: err.errmsg
});
}
if (!chunks || chunks.length === 0) {
//No data found
return res.render('index', {
title: 'Download Error',
message: 'No data found'
});
}
let fileData = [];
for (let i = 0; i < chunks.length; i++) {
//This is in Binary JSON or BSON format, which is stored
//in fileData array in base64 endocoded string format
fileData.push(chunks[i].data.toString('base64'));
}
//Display the chunks using the data URI format
let finalFile = 'data:' + docs[0].contentType + ';base64,'
+ fileData.join('');
// res.render('imageView', {
// title: 'Image File',
// message: 'Image loaded from MongoDB GridFS',
// imgurl: finalFile
res.json({
message: "Success",
data: finalFile
});
});
}