Должен ли я использовать connect-busboy или просто busboy с express - PullRequest
0 голосов
/ 28 апреля 2020

Я довольно новичок в node.js и express, а также в управлении пакетами (я из старой школы C ++). Мне удалось иметь (работающее) приложение express (сгенерированное с помощью npx express -generator), которое использует busboy для отправки данных в GridFS через поток.

Дело в том, что я включил только busboy 'в моем контроллере. И большинство примеров, которые я вижу, используют "connect-busboy" (6 лет с момента последнего коммита) или "express -busboy" (меньше примеров) в качестве промежуточного программного обеспечения. В чем преимущество express -Boyboy, который полагается на пакет, которому 6 лет?

Действительно, мне удается использовать просто busboy, и пока он работает. Я пропускаю что-то, что оправдывает использование express busboy или connect-busboy? Это работает "случайно" прямо сейчас, но у меня будут проблемы в будущем, если я захочу использовать другие функции, связанные с манипулированием запросами / URL? Это плохой дизайн или глупый, связанный с тем, как express предназначен для использования?

Вот выдержка из моего кода:

Приложение. js

Нет необходимости в автобусе вообще. Только что изменил сгенерированную по умолчанию строку о urlenconding, чтобы "extension: true" (если установлено в false, busboy не работает)

app.use(express.urlencoded({ extended: true })); 

маршруты / индекс. js

var express = require('express');
var router = express.Router();

let mycontroller = require('../controllers/mycontroller')
/* GET home page. */


router.get('/mycontroller/', mycontroller.get_landing);
router.post('/mycontroller/', mycontroller.submit_ctrl);

module.exports = router;

контроллеры / mycontroller. js

const MongoClient = require('mongodb').MongoClient;
const mongodb = require('mongodb');
const assert = require('assert');


var Busboy = require('busboy');   
var inspect = require('util').inspect; 


exports.get_landing = function(req, res, next) {
    res.render('mycontroller', { title: 'Express' });
  }

  exports.submit_ctrl = function(req, res, next) {

    // Connection URL
    const url = 'mongodb://localhost:27017';

    // Database Name
    const dbName = 'mydb';

    // Use connect method to connect to the server
    MongoClient.connect(url, function(err, client) {
    assert.equal(null, err);

    let busboy = new Busboy({ headers: req.headers });

    const db = client.db(dbName);
    const bucket = new mongodb.GridFSBucket(db);



    busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {

        const saveTo = (Date().toString() + filename);
        file.pipe(bucket.openUploadStream(saveTo));

    });
    busboy.on('finish', function() {
        client.close();
        res.redirect('/mycontroller/');

      });
      req.pipe(busboy);



    });



}
...