Node.js POST 请求在 Postman 中永远挂起

Gaz*_*Gaz 2 mongoose mongodb node.js

我已经按照教程成功地设置了一个注册系统,并且一直在尝试获取自己的数据来 POST 我的 MongoDB,但是 Postman 请求永远发送。我不确定我是否遗漏了某些内容或者我是否使用了不正确的语法?

\n\n

我只是想为我的 \xe2\x80\x98Hobby\xe2\x80\x99 模型发布两个字符串。

\n\n

hobbies.js (api) 包含在 paths/api 中。

\n\n
const express = require("express");\nconst router = express.Router();\nconst mongoose = require("mongoose");\n\nconst Hobbies = require("../models/Hobby");\n\n// @route   GET api/posts/test\n// @desc    Tests post routes\n// @access  Public - (Private routes are for registered and logged in users)\nrouter.get("/test", (req, res) => res.json({ msg: "Hobbies page Works" }));\n\nrouter.post("/newhobby", (req, res) => {\n  //else create the new user in the DB using the data input by user\n  const newHobby = new Hobbies({\n    newhobby: req.body.newhobby,\n    classes: req.body.classes\n  });\n});\n\n//make router available elsewhere (from server.js in this case)\nmodule.exports = router;\n
Run Code Online (Sandbox Code Playgroud)\n\n

Hobby.js(模型)模型在我的 paths/models 文件夹中定义

\n\n
const mongoose = require("mongoose");\nconst Schema = mongoose.Schema;\n\n//Create schemac\nconst HobbiesSchema = new Schema({\n  newhobby: {\n    type: String,\n    required: true\n  },\n  classes: {\n    type: String\n  }\n});\n\nmodule.exports = Hobby = mongoose.model("hobbies", HobbiesSchema);\n
Run Code Online (Sandbox Code Playgroud)\n\n

Server.js 处理我的服务器的配置

\n\n
const express = require("express");\nconst mongoose = require("mongoose");\nconst bodyParser = require("body-parser");\nconst passport = require("passport");\n\nconst users = require("./routes/api/users");\nconst profile = require("./routes/api/profile");\nconst posts = require("./routes/api/posts");\nconst donate = require("./routes/api/donate");\nconst hobby = require("./routes/api/hobbies");\n\nconst app = express();\n\n// Body parser middleware\napp.use(bodyParser.urlencoded({ extended: false }));\napp.use(bodyParser.json());\n\n// DB  config\nconst db = require("./config/keys").mongoURI;\n\n// Connect to DB through mongoose\nmongoose\n  .connect(db)\n  .then(() => console.log("MongoDB Connected"))\n  .catch(err => console.log(err));\n\n//Passport middleware\napp.use(passport.initialize());\n\n//Passport config\nrequire("./config/passport.js")(passport);\n\n// Use routes\napp.use("/api/users", users);\napp.use("/api/profile", profile);\napp.use("/api/posts", posts);\napp.use("/api/donate", donate);\napp.use("/api/hobbies", hobby);\n\nconst port = process.env.PORT || 5000;\n\napp.listen(port, () => console.log("Server runnning on port", port));\n
Run Code Online (Sandbox Code Playgroud)\n\n

邮递员被卡住\n邮递员卡住 POST 请求

\n

jfr*_*d00 5

在这篇文章中的路线:

router.post("/newhobby", (req, res) => {
  //else create the new user in the DB using the data input by user
  const newHobby = new Hobbies({
    newhobby: req.body.newhobby,
    classes: req.body.classes
  });
});
Run Code Online (Sandbox Code Playgroud)

您不会向客户端/浏览器发送任何响应。因此,它坐在那里等待响应,但始终没有响应。我不知道您想要的响应是什么,但对于程序化请求,它可能只是简单的事情:

res.json({response: "ok"});
Run Code Online (Sandbox Code Playgroud)

或者

res.send("ok");
Run Code Online (Sandbox Code Playgroud)

如果这是从浏览器发布的表单,那么您将需要发回一个 HTML 页面以在提交表单后显示。

router.post("/newhobby", (req, res) => {
  //else create the new user in the DB using the data input by user
  const newHobby = new Hobbies({
    newhobby: req.body.newhobby,
    classes: req.body.classes
  });
  // do something here with newHobby

  // then send a response
  res.send("all done");
});
Run Code Online (Sandbox Code Playgroud)