Я довольно новичок в 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);
});
}