mongoose及multer使用的一些小坑

  1. 使用multer上传文件时,入股想同时传点参数进去,需要注意参数添加的顺序,否则multer可能接收不到:
const multer = require('multer');
const path = require('path');
const config = require('../../config/config');
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, config.UPLOAD_PATH);
    },
    filename: function (req, file, cb) {
        //make random filename with tag appendix
        const fileName = `${new Date().getTime()}_${req.body.tag || 'notag'}${path.extname(file.originalname)}`;
        //return filename
        cb(null, fileName);
    }
});
const upload = multer({ storage: storage });

module.exports = upload.single('file');

以上代码中,保存文件名中加入了tag这个自定义字段,以区分不同的文件类型。通过前台传入。操作中发现无法获取,原因是前台传入顺序一定要把file字段放在最后:

image.png

如果把4放在最前面。后面的参数都接收不到

  1. mongoose的callback接收参数问题:
    由于node的回调函数第一个参数始终是error,所以一定要注意传两个参数进去,否则拿不到值:
Model.findByIdAndRemove(req.params.id, (err,target) => {
//...
}

上面如果只传入target,则拿不到值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,933评论 0 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 32,795评论 24 1,002
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 2016年端午节去青岛的火车上丢了Ipad。买的卧铺票,Ipad放在枕头下面,到站时,刚刚睡醒,手忙脚乱的整理好行...
    知瑜阅读 941评论 1 3