首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将中间件移动到服务层

如何将中间件移动到服务层
EN

Stack Overflow用户
提问于 2019-07-21 14:36:20
回答 1查看 336关注 0票数 1

我试图将中间件功能移到服务层,但运行时出现了错误。我甚至不确定我是否遵循正确的分层。

错误:

** Route.post()需要一个回调函数,但有一个对象**

file.service.ts

代码语言:javascript
复制
require('rootpath')()
const db = require('helpers/db.ts')
const mongoose = require('mongoose')
const multer = require('multer')
const GridFsStorage = require('multer-gridfs-storage')
const Grid = require('gridfs-stream')
const myCrypto = require('crypto')
const path = require('path')



var gfs = Grid(mongoose.connection, mongoose.mongo);  
gfs.collection('uploads');


var storage = new GridFsStorage({
    //url: mongoose.connection.client.s.url,
    //options: options,
    db: mongoose.connection,
    file: (req, file) => {
      return new Promise((resolve, reject) => {
        myCrypto.randomBytes(16, (err, buf) => {
          if (err) {
            return reject(err);
          }
          const filename = buf.toString('hex') + path.extname(file.originalname);
          const fileInfo = {
            filename: filename,
            bucketName: 'uploads'
          };
          resolve(fileInfo);
        });
      });
    }
  });
  const upload = multer({ storage });

  module.exports = {
      upload
  }

file.controller.ts

代码语言:javascript
复制
require('rootpath')()
const express = require('express')
const router = express.Router()
const fileService = require('routes/_shared/file.service.ts')

var logger = function(req, res, next)
{
    console.log("File Controller");

    next();
}

  router.use(logger);
  router.post('/upload', fileService.upload, fileUpload);

  module.exports = router;

function fileUpload(req, res) {

    res.send({ file: req.file })
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-21 19:03:51

请仔细检查 usage文档。

您将fileService.upload作为第二个参数传递给router.post方法,而fileService.upload是一个对象,而不是一个函数(错误消息所指向的)。

相反,您应该传递fileService.upload.single('avatar')或使用其他upload方法,如arrayfieldsanynone

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57134165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档