我的axios删除方法不起作用,而post方法起作用

问题描述 投票:0回答:2

我正在制作喜欢、不喜欢的功能。 一切正常,除了这个删除方法😐

在反应:

const goDownLike = async () => {
  const variables = {
    fromWhom: user.userData._id,
    toWhat: toWhat
  };

  await axios.delete('/api/heart/downLike', variables);
}

在 Node.js :

router.delete('/downLike', (req, res) => {
  Like.findOneAndDelete(req.body).exec((err, result) => {
    if (err) return res.status(400).json({ success: false, err });
    res.status(200).json({ success: true });
  });
});

每次点击心形的时候,好像删除了别人的点赞,包括我的😐

所以我就这样改变了:

router.delete('/downLike', (req, res) => {
  const { fromWhom, toWhat } = req.body;
  Like.findOneAndDelete({ fromWhom: fromWhom, toWhat: toWhat }).exec(
    (err, result) => {
      if (err) return res.status(400).json({ success: false, err });
      res.status(200).json({ success: true });
    }
  );
});

但这实际上是不要删除任何喜欢,即使是我的!

我从此改变了

Like.findOneAndDelete

到此

Like.deleteOne

这也不起作用。它什么也不删除。

所以我把

delete method
改为
post method
终于成功了。 😐 我的点赞被删除了,而某人的心却没有被删除。

但我不想用

post method
代替
delete method
😐 我想遵守 RESTful 的规则。

我该怎么办? 我错过了什么?

感谢您的帮助。

mongodb mongoose axios
2个回答
1
投票

它适用于 POST 而不是 DELETE 的原因是

axios.post()
的第二个参数是正文,而
axios.delete()
的第二个参数是 axios 配置对象。这大概是因为 对于 DELETE 请求是否可以或应该有主体,以及如果有主体会发生什么,存在一些分歧,并且随着时间的推移而发生变化

您可以在配置对象中传递数据,如here所示。


0
投票

就我而言,我遇到了一个奇怪的错误:Axios 无法解析从后端发送的 204 状态代码。只需在后端将

204
状态代码更改为
200
即可解决该问题。

我得到:

Proxy error: Could not proxy request /api/user/ide

这清楚地表明解析问题被污染到错误消息(完整路径为/api/user/idea,最后一个a在解析时被截断)。

这花了我一生的两个小时。作为互联网上最流行的 javascript 请求库,我希望 Axios 具有更强的鲁棒性。

© www.soinside.com 2019 - 2024. All rights reserved.