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

Express.js中POST路由错误如何处理?错误ID提交无响应问题求助

问题原因与修复方案

Cannot POST /admin/audio-folder/edit/ 报错的核心是服务端没有匹配到对应路径的POST请求路由,和你当前写的业务更新逻辑关联不大,按以下步骤排查修复:

1. 修复路由配置

  • 确认你已注册了路径匹配/admin/audio-folder/edit/、请求方法为POST的路由,常见错误是误将路由方法写为app.get(),或者路径拼写、斜杠规则和前端提交地址不匹配
  • 如果你的编辑路由需要携带参数,要和前端提交地址对齐,比如路由可以定义为app.post('/admin/audio-folder/edit/:updateSlug', 处理函数),和前端表单提交的action路径完全匹配

2. 修正现有业务代码的逻辑错误

你当前使用的Sequelize的update方法返回值为「受影响行数组成的数组」,不是布尔值,所以if (audioFolder)判断永远为真,就算没有匹配到对应slug、更新0行也不会跳转回上一页,修改代码如下:

try {
    const updateFolder = {
        folderName: pureFolderName,
        userId: purePartnerName,
        slug: pureslug,
        folderImage: audioFolderImage,
    };
    // 解构获取受影响的行数
    const [affectedRows] = await AudioFolder.update(updateFolder, {
        where: { slug: updateSlug },
    });
    // 受影响行数大于0才说明更新成功
    if (affectedRows > 0) {
        res.redirect('/admin/audio-folder');
    } else {
        req.flash('error', '提交的ID无效,数据更新失败');
        return res.redirect('back');
    }
} catch (error) {
    req.flash('error', '数据处理过程中发生错误');
    return res.redirect('back');
}

注意不需要给redirect手动指定200状态码,redirect默认会使用符合规范的302状态码,手动设置200会导致浏览器跳转行为异常。

3. 核对前端表单配置

确认提交的表单method属性设置为POST,action属性的地址和服务端注册的POST路由完全一致,避免出现路径多/少斜杠、参数缺失的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:24:05