如何使用TYPEORM更新数据库条目?PUT路由返回500错误如何解决?
问题根因
你遇到的500错误核心是控制器中TypeORM的update方法调用不符合规范:
TypeORM实体的静态update方法第一个参数要求传入匹配目标记录的查询条件对象,你直接传入了字符串类型的name参数,方法无法解析查询逻辑直接抛出异常,触发500返回。
修复方案
修改控制器中update方法的入参即可,修改后的代码如下:
const updateSub = async (req: Request, res: Response) => { const name = req.params.name const { description, title } = req.body try { // 第一个参数改为匹配name字段的查询对象 const subUpdate = await Sub.update({ name }, { description, title }) return res.json(subUpdate) } catch (err) { console.log(err) return res.status(500).json({ error: 'Something went wrong' }) } }
可选优化建议
- 可以先查询目标Sub记录是否存在,不存在时直接返回404错误,给前端更明确的提示,也能避免无意义的更新操作
- 可以对入参
title做非空校验,你的Sub实体中title字段没有设置nullable属性,传空值会触发数据库层面的报错
内容的提问来源于stack exchange,提问作者rightengineer
相关产品推荐
相关产品推荐

