You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supabase与ExpressJS集成时的错误处理异常问题

问题解决:Supabase删除接口处理不存在ID的情况

问题原因

Supabase的delete()方法在未匹配到任何行时,不会返回错误(error为null),而是返回空数组作为data。你的原代码仅判断data是否存在,空数组在JavaScript中属于“真值”,因此会执行删除成功的分支。

解决方案

修改判断逻辑,在确认无错误后,检查data的长度:

  • 若data.length === 0,说明没有找到对应ID的书籍,返回404状态码和提示信息
  • 若data.length > 0,说明删除成功,返回成功提示

修改后的代码:

app.delete('/api/delete-book/:id', cors(corsOptions), async (req, res) => {
  const {data, error} = await supabase
    .from('books-express')
    .delete()
    .match({id: req.params.id})

  if (error) {
    return res.status(400).send({message: `ERROR! ${error.message}`})
  }

  if (data.length === 0) {
    return res.status(404).send({message: `Book ID ${req.params.id} does not exist in the database`})
  }

  res.send({
    message: `Book ID ${req.params.id} has been deleted from the database`,
  })
})

关键细节

  • 每个响应前添加return,避免后续代码继续执行(比如返回错误后,不会再走到成功响应逻辑)
  • 针对不存在的资源返回404状态码,符合RESTful API的设计规范

内容的提问来源于stack exchange,提问作者mrpbennett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 18:45:38