尝试以 Postman 和sequelize方式发送表单数据时返回错误:value cannot be null
但是当用json发送原始请求时,一切正常。尝试body-parser和multer,但是没有任何工作
这是我的索引.ts
import express from "express";
import fileUpload from "express-fileupload"
...
const app = express()
const PORT = process.env.PORT || 5100
app.use(cors())
app.use(express.json())
app.use('/api', router)
app.use(fileUpload({}))
app.use(errorHandler)
const start = async () => {
try {
await sequelize.authenticate()
await sequelize.sync()
console.log(chalk.cyanBright('Successful conection to data base'));
app.listen(PORT, () => { console.log(chalk.cyanBright(`Server has been started on port ${PORT}`)) })
}
catch (e) {
console.log(e);
}
}
start()
这是我的控制器
export const DeviceController = {
async create(req: Request, res: Response, next:nextType) {
try {
const { brandId, typeId, name, price } = req.body
const img = req.files
let filename = 'uuid.v4()' + '.jpg'
img?.mv(path.resolve(__dirname, '..', 'static', filename))
const device = await Models.Device.create({ brandId, typeId, name, price, img: filename })
return res.json(device)
} catch (error: any) {
next(ApiError.badRequest(error.message))
console.log(error);
}
1条答案
按热度按时间fdbelqdn1#
您拥有用于JSON请求主体的主体解析中间件。
对于多部分/表单数据请求主体,你没有主体解析中间件。documentation for body-parser列出了几个你可以使用的中间件。
正在尝试主体解析器
...表示它不支持该格式
和多个
......似乎并不存在。你是说多方?还是说Multer?
我们不能告诉你你做错了什么没有看到你的尝试。
重新编辑:
你说:
但文件上说:
files
属性包含所有文件,这些文件按多部分请求中为它们指定的名称进行索引。您尝试读取文件的 * 集合 *,就好像它是一个文件一样。