【发布时间】:2016-03-06 05:06:11
【问题描述】:
我正在使用快速路由器来定义我的路由,我需要添加一个中间件所以一些路由,只需在回调函数输出以下错误之前添加中间件:
Error: Route.post() requires callback functions but got a [object Object]
我正在将文件夹作为模块使用,我的模块正在上传,这是 index.js:
module.exports = (function () {
var express = require( 'express' ),
router = express.Router(),
multer = require( 'multer' ),
transaction_docs = multer( { dest: './client/public/docs/transactions/' } ),
product_images = multer( { dest: './client/public/img/products' } ),
upload = require( './upload' );
router.route( '/upload/transaction-docs' )
.post( transaction_docs, upload.post );//If I take off transaction_docs theres no error
router.route( '/upload/product-images' )
.post( product_images, upload.post );//Same as above
return router;
})();
这里是 upload.js:
module.exports = (function () {
function post( request, response ) {
var filesUploaded = 0;
if ( Object.keys( request.files ).length === 0 ) {
console.log( 'no files uploaded' );
} else {
console.log( request.files );
var files = request.files.file1;
if ( !util.isArray( request.files.file1 ) ) {
files = [ request.files.file1 ];
}
filesUploaded = files.length;
}
response.json(
{
message: 'Finished! Uploaded ' + filesUploaded + ' files.',
uploads: filesUploaded
}
);
}
return {
post: post
}
})();
【问题讨论】:
-
如何用exports.post替换module.exports并相应地调整其余代码
-
为什么要使用自调用函数?
-
@Vohuman 我看到一个这样使用它的例子,是不是很糟糕?
-
还不错。此处无需使用。
-
那么推荐的重写方式是什么@Vohuman?
标签: node.js express middleware multer