当前位置: 首页 > 知识库问答 >
问题:

快车中的补丁路由/终结点不工作

罗鸿畴
2023-03-14

您好,我已经为一个不工作的apiendpoint编写了以下路由。当我使用Postman和我的代码进行测试时,它只是一个404NotFound错误。

router.patch("/favorite", async (req, res) => {
  user = await User.findById(req.body.id)
  if (user == null) {
    return res.status(404).json({ message: 'Cannot find user' })
  }
  if (req.body.putArr != null) {
    res.user.favPokemon = req.body.putArr;
  }
  try {
    const updatedUser = await res.user.save();
    console.log(res.user.favPokemon);
    console.log(updateUser);
    res.json(updatedUser);
  } catch (err) {
    res.status(400).json({ error: err.message });
  }
});

编辑:对未指定endpoint表示歉意。更清楚地说,调用此函数的终点和代码是:

const favThis = async (e) => { // Patch method to favorite or unfavorite a pokemon
    debugger;
    e.preventDefault();
    try {
      console.log(putArr);
      const newUser = {userID, putArr};
      await axios.patch("http://localhost:5000/users/favorite", newUser);
    } catch(err) {
      err.response.data.msg && setError(err.response.data.msg)
    }
    };

,所以它是http://localhost:5000/users/favorite。我有其他endpoint工作正常,例如http://localhost:5000/users/loginhttp://localhost:5000/users/register,以及服务器内部。js我有应用程序。使用(“/users”,要求(“/routes/users”)

此外,服务器。js只是

const express = require("express");
const mongoose = require("mongoose");
const cors = require("cors");
require("dotenv").config();

// set up express

const app = express();
app.use(express.json());
app.use(cors());

const PORT = process.env.PORT || 5000;

app.listen(PORT, () => console.log(`The server has started on port: ${PORT}`));

// set up mongoose
mongoose.connect(
  process.env.MONGODB_CONNECTION_STRING,
  {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    useCreateIndex: true,
  },
  (err) => {
    if (err) throw err;
    console.log("MongoDB connection established");
  }
);

// set up routes

app.use("/users", require("./routes/users"));
app.use("/todos", require("./routes/todo"));

编辑2:: 我现在注意到,当我在邮递员上测试时,它是一个无限循环,呼叫被挂起。我也得到以下警告在我的控制台:

(节点:36447)未处理的PromisejectionWarning:未处理的promise拒绝。此错误源于在没有catch块的情况下抛出异步函数的内部,或者拒绝使用未处理的promise。catch()。要在未处理的promise拒绝时终止节点进程,请使用CLI标志--unhandled rejections=strict(请参阅https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)(拒绝id:1)

(节点:36447)[DEP0018]弃用警告:未处理的promise拒绝已弃用。将来,未处理的promise拒绝将终止节点。具有非零退出代码的js进程。


共有1个答案

邹阳
2023-03-14

基于警告,您在promise中有失败的代码,但没有被捕获。也许在这一行中user=wait User.findById(req.body.id)

使用mocha/chai进行测试时收到未处理的Promisejection警告

 类似资料:
  • Git 中的一些命令是以引入的变更即提交这样的概念为中心的,这样一系列的提交,就是一系列的补丁。 这些命令以这样的方式来管理你的分支。 git cherry-pick git cherry-pick 命令用来获得在单个提交中引入的变更,然后尝试将作为一个新的提交引入到你当前分支上。 从一个分支单独一个或者两个提交而不是合并整个分支的所有变更是非常有用的。 在 变基与拣选工作流 一节中描述和演示了

  • 我们有一个属性为的文章资源: 标题 图像 描述: __________ 状态:已发布|草稿 如果我们只想删除图像,我们提出请求 如果我们只想更新状态,我们会提出请求 但在这种情况下,图像也将被删除。 如何在REST中只更新一个属性?

  • 问题内容: 我想嘲笑。但是,当我运行以下代码时,该模拟被完全忽略了,我不确定为什么 测试代码: 模块代码: 问题答案: 您没有在正确的位置打补丁。您在定义的地方打补丁: 您需要修补导入的位置,即在编写此行的“模块代码”中: 即,它应该看起来像: 要获得快速指南,请阅读文档中的部分:修补位置。

  • 向app store发布新的app版本可能需要一些时间。Tabris.js允许直接向你的用户发布热更新,而无需等待app store更新。 为了符合Apple App Store的规则,修补程序必须“[…] not change the primary purpose of the app by providing features or functionality that are incons

  • 补丁是一个文本文件,其内容类似于,但与代码一样,它也有关于提交的元数据; 例如提交ID,日期,提交消息等。我们可以从提交创建一个补丁,而其他人可以将它们应用到他们的存储库。 假设我们在项目实现了一个函数。并将编写的代码的路径并发送给其他开发人员。 然后,其他开发人员可以将接收的补丁应用到自己的代码中。 我们使用命令创建最新提交的修补程序。 如果要为特定提交创建修补程序,请在命令后面指定 。 上述命

  • 问题内容: com.android.volley.NoConnectionError:java.net.ProtocolException:未知方法“ PATCH”;必须是[OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE]中的一种 问题答案: 您确定使用的Volley Library版本正确吗?我刚刚在Lollipop中尝试了您的代码,它工作正常。如果您将Volley