Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express中的修补程序路由/终结点不工作_Node.js_Mongodb_Api_Express - Fatal编程技术网

Node.js Express中的修补程序路由/终结点不工作

Node.js Express中的修补程序路由/终结点不工作,node.js,mongodb,api,express,Node.js,Mongodb,Api,Express,您好,我已经为一个不工作的api端点编写了以下路由。当我使用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 us

您好,我已经为一个不工作的api端点编写了以下路由。当我使用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 });
  }
});
我遗漏了什么/代码中有什么错误?以下是我的mongoDB用户设置,仅供参考:

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

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
。我有其他端点工作正常,例如
http://localhost:5000/users/login
http://localhost:5000/users/register
,在
server.js
中我有
app.use(“/users”,require(“/routes/users”)

此外,server.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::我现在注意到,当我在Postman上测试时,它是一个无限循环,调用被挂起。我在控制台中还收到以下警告:

(节点:36447)未处理的PromisejectionWarning:未处理的承诺拒绝。此错误源于在没有catch块的异步函数中抛出,或者拒绝未使用.catch()处理的承诺。要在未处理的承诺拒绝时终止节点进程,请使用CLI标志
--unhandled rejections=strict
(请参阅)。(拒绝id:1)


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

根据警告,您的承诺中存在未捕获的失败代码。也许在这行
user=wait user.findById(req.body.id)


您的HTTP请求是什么样子的?API的基本url是什么?这应该在您的
index.js
或您正在使用的任何入口点中定义。它应该类似于
https://localhost:3000/api/favorite
我注意到您的帖子和评论中的端口不同(3000 v 5000)。
server.js中是否包含
router.patch
?很抱歉,我犯了另一个错误,我想在评论中写localhost:5000/users/favorite。不,我在users.js的routes文件夹下有router.patch和其他HTTP方法/路由。Server.js只有
应用程序。listen
,端口,并与mongoDBWhen您点击端点时看到的是404吗<代码>返回res.status(404).json({message:'找不到用户'})}
。根据您发布的内容,代码看起来是正确的。谢谢,我所做的只是将所有内容都放在“try”括号内。但是,现在我有一个错误“无法设置未定义的'favPokemon'的属性”,所以我现在要解决这个问题!