javascript - UnhandledPromiseRejectionWarning:ValidationError:file validatiofailed:uuid:Cast to Number failedfor value"dc1-c7ffd748df"(type string) at path"uuid
问题描述
我正在尝试使用 nodejs 制作文件上传器。当我在邮递员中上传文件后尝试对其进行测试时,我收到以下错误消息。
(节点:9992)UnhandledPromiseRejectionWarning:ValidationError:文件验证失败:uuid:Cast to Number 值“dc1c9e3c-2931-480a-87cf-c4c7ffd748df”(类型字符串)在model.Document.invalidate(C: \Users\Win10\filesender\node_modules\mongoose\lib\document.js:2879:32) 在 model.$set (C:\Users\Win10\filesender\node_modules\mongoose\lib\document.js:1426:12)在 model.$set (C:\Users\Win10\filesender\node_modules\mongoose\lib\document.js:1128:16) 在 model.Document (C:\Users\Win10\filesender\node_modules\mongoose\lib\document .js:148:12) 在 model.Model (C:\Users\Win10\filesender\node_modules\mongoose\lib\model.js:106:12) 在新模型 (C:\Users\Win10\filesender\node_modules\ mongoose\lib\model.js:4751:15) 在 C:\Users\Win10\filesender\router\files.js:30:23 在立即。(C:
node --trace-warnings ...
显示警告的创建位置)(节点:9992)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志--unhandled-rejections=strict
(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。(拒绝 id:1)(节点:9992)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
我的文件.js
const router = require('express').Router();
const multer = require('multer');
const File = require('../model/model');
const path = require('path');
const { v4: uuidv4 } = require('uuid');
let storage=multer.diskStorage({
destination:(req,file,cb)=>cb(null,'uploads/'),
filename:(req,file,cb)=>{
//const uniquename =`${Date.now()}-${Math.round(Math.random()* 1E9)} ${(file.originalname)}`;
const uniquename = `${Date.now()}-${Math.round(Math.random() * 1E9)}${path.extname(file.originalname)}`;
cb(null,uniquename);
}
})
let upload = multer({
storage,
limit: {fileSize:1000000 * 1000}
}).single('myfile')
router.post('/', (req,res)=>{
// store file
upload(req,res,async (e)=>{
if(!req.file) res.json("file is mandatory");
if(e){
res.status(500).json({error:e.message});
}
const file = new File({
filename:req.file.filename,
uuid:uuidv4(),
path:req.file.path,
size:req.file.size
});
const response= await file.save();
res.json(`${process.env.APP_BASE_URL}/file/${response.uuid}`);
})
})
module.exports = router;
在这里,我可以看到当我从邮递员发送帖子请求时,文件正在“上传”文件夹中上传。但是,我没有给出这个 url (${process.env.APP_BASE_URL}/file/${response.uuid}) 作为响应,而是给出了上述错误。提前谢谢..
解决方案
推荐阅读
- css - CSS网格等大小列
- system.reactive - 为什么/我应该在没有 Connect 的情况下使用 Publish?
- python - 选择日期时间间隔内的行
- python - Lambda 上的 ValueError
- jquery - 如何显示特定区域?
- android - 我可以在不插电的可移动存储路径上写字
- jmeter - 当吞吐量控制器具有子吞吐量控制器时,使用 jmeter 中的吞吐量控制器进行负载分配
- java - Android Retrofit API 使用
- python - Python,从文件中读取 -> 将文件内容添加到列表 -> 将列表与用户输入进行比较
- go - 为什么我会从此 API 调用中收到意外的 EOF?