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

基于Express的json-server中,如何通过单个POST发起多个DELETE请求?

解决json-server批量删除favorites时redirect仅执行一次的问题

问题原因

你当前的代码里,res.redirect()会立即向客户端发送HTTP响应,而每个HTTP请求只能对应一个响应。所以循环里第一次调用res.redirect()后,整个请求就直接结束了,后续的循环迭代根本没机会执行,自然只能删除第一个ID对应的资源。

解决方案:直接操作json-server的数据库实例

json-server基于lowdb(轻量级JSON数据库),我们可以直接操作它的数据库实例来批量删除,这比多次发起DELETE请求高效得多,也能彻底避开redirect的限制。

修改你的自定义路由handler如下:

'/deletefavorites': { 
  method: 'POST', 
  handler: function(req, res, next) { 
    // 1. 获取json-server的数据库实例
    const db = req.app.db;
    // 2. 提取要删除的favorites ID数组
    // 注意:请确保前端传入的req.body是合法JSON,比如 [{id:"123"}, {id:"124"}] 或 ["123", "124"]
    const idsToDelete = req.body.map(item => item.id || item);
    
    // 3. 批量删除favorites集合中匹配ID的项
    db.get('favorites')
      .remove({ id: idsToDelete }) // lowdb支持传入数组批量匹配ID
      .write();
    
    // 4. 向客户端返回成功响应
    res.status(200).json({
      success: true,
      message: `成功删除${idsToDelete.length}条收藏`,
      deletedIds: idsToDelete
    });
  } 
}

额外提醒

如果你的req.body是{[ "id": "123", "id":"124" ]}这种无效格式,需要先修正前端的请求数据,改成合法的JSON数组,否则req.body.map会直接报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:09:56