Есть ли лучшая реализация для извлечения файлов в монго и узле js, которая использует сетку fs? - PullRequest
0 голосов
/ 16 октября 2019

Есть ли лучшая реализация для извлечения файлов в монго и узле 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

                        });

                    });
            }
...