如何将另一个变量传递给已定义的方法

时间:2019-08-29 14:32:54

标签: javascript multer-s3

我正在使用multer-s3,并且定义了以下方法:

const singleImageUpload = multer({
    storage: multerS3({
        s3: s3,
        bucket: "pilled",
        acl: "public-read",
        key: function(req, file, cb) {
            cb(null, Date.now() + "-" + req.user.id);
        }
    }),
    limits: {
        fileSize: 50 * 1024 * 1024
    }
}).single("image");

在发布路线中,我将此方法称为:

router.post(
    "/single", auth, async (req, res) => {
        let file = null;

        singleImageUpload(req, res, error => {
              file = req.file;

              if (error) {} else { /* ... */ };
        });

    console.log('file', file); // null

这里的问题是file没有分配给req.file。我试过将它包装在一个封闭的容器中,

router.post(
  "/single", auth, async (req, res) => {
      let file = null;

      const closure = file => {
        singleImageUpload(req, res, error => {
          file = req.file;

          if (error) {} else { /* ... */ };
        });
      }

      closure(file);

      console.log('file', file); // null

但是,{file仍然为空。我该如何实现? req.file在multer解析后消失了,但是我仍然需要它的元数据在发布路线的后面。

0 个答案:

没有答案