MERN 堆栈上的 FindOneAndDelete 将返回成功但数据仍在数据库中?

Posted

技术标签:

【中文标题】MERN 堆栈上的 FindOneAndDelete 将返回成功但数据仍在数据库中?【英文标题】:FindOneAndDelete on MERN stack would return successful but the data is still in database? 【发布时间】:2021-08-17 06:02:26 【问题描述】:

我正在尝试在我的DELETE 端点上的“mongoose”中使用findOneAndDelete 方法,使用“Expressjs”作为我的服务器,并使用“reactjs”在 try-catch 中处理提取 API 以删除选定的数据。 我得到了 200,但删除结果 json 带来了 n=0 游戏被删除,并且数据没有从我的数据库中删除。代码如下:

端点:

    router.delete('/trivia/:name', async (req, res) => 
        const gameToDelete = req.params.name;
        try 
            const deleteQuery = games.Trivia.findOneAndDelete( name: gameToDelete );
            const deleteResult = await deleteQuery.deleteOne();
            console.log("Deleting a game from database", deleteResult);
            res.send(deleteResult);
         catch (error) 
            console.log("Failed to delete trivia", gameToDelete);
            res.status(500).send( error: error.code, message: "Something went wrong, I couldn't delete your game" );
        
    );

响应获取请求:

    async function onDelete(game) 
        try 
          const res = await fetch(`/game/trivia/:$game`, 
            method: "DELETE",
            body: null,
            headers: 
              "Content-Type": "application/json"
            ,
          );

         catch (error) 
          console.error("error", error);
        ;
      

【问题讨论】:

【参考方案1】:

问题实际上在于:获取删除请求! 我必须纠正

          const res = await fetch(`/game/trivia/:$game`, 

然后放

          const res = await fetch(`/game/trivia/$game`, 

改为

【讨论】:

以上是关于MERN 堆栈上的 FindOneAndDelete 将返回成功但数据仍在数据库中?的主要内容,如果未能解决你的问题,请参考以下文章

使用 MERN 堆栈和 socket.io 进行私人聊天

Reactstrap Form 重置输入值 MERN 堆栈

由于缺少引号,布尔值未在 MERN 堆栈中更新

MERN 堆栈中的 CSRF 实现

尝试将带有顺风的 MERN 堆栈部署到 Heroku 时构建失败

如何在 mern 堆栈中获取注册表单的国家/地区列表?