![](/img/trans.png)
[英]Dynamics CRM Online + Node.js (request runns forever /hangs)
[英]Node.js POST request hangs forever in Postman
我已經按照教程設法建立了一個注冊系統,並且一直在嘗試獲取我自己的數據來發布我的 MongoDB,但是 Postman 請求永遠發送。 我不確定我是否遺漏了某些東西,或者我是否使用了錯誤的語法?
我只是想為我的“愛好”模型發布兩個字符串。
hobbies.js (api) 包含在 routes/api 中。
const express = require("express");
const router = express.Router();
const mongoose = require("mongoose");
const Hobbies = require("../models/Hobby");
// @route GET api/posts/test
// @desc Tests post routes
// @access Public - (Private routes are for registered and logged in users)
router.get("/test", (req, res) => res.json({ msg: "Hobbies page Works" }));
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
});
});
//make router available elsewhere (from server.js in this case)
module.exports = router;
Hobby.js (model) 模型在我的 routes/models 文件夾中定義
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
//Create schemac
const HobbiesSchema = new Schema({
newhobby: {
type: String,
required: true
},
classes: {
type: String
}
});
module.exports = Hobby = mongoose.model("hobbies", HobbiesSchema);
Server.js 處理我的服務器的配置
const express = require("express");
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
const passport = require("passport");
const users = require("./routes/api/users");
const profile = require("./routes/api/profile");
const posts = require("./routes/api/posts");
const donate = require("./routes/api/donate");
const hobby = require("./routes/api/hobbies");
const app = express();
// Body parser middleware
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
// DB config
const db = require("./config/keys").mongoURI;
// Connect to DB through mongoose
mongoose
.connect(db)
.then(() => console.log("MongoDB Connected"))
.catch(err => console.log(err));
//Passport middleware
app.use(passport.initialize());
//Passport config
require("./config/passport.js")(passport);
// Use routes
app.use("/api/users", users);
app.use("/api/profile", profile);
app.use("/api/posts", posts);
app.use("/api/donate", donate);
app.use("/api/hobbies", hobby);
const port = process.env.PORT || 5000;
app.listen(port, () => console.log("Server runnning on port", port));
在這個帖子路線中:
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
});
});
您不會向客戶端/瀏覽器發送任何響應。 因此,它坐在那里等待回應,但永遠不會到來。 我不知道你想要什么響應,但對於程序化請求,它可能只是簡單的事情:
res.json({response: "ok"});
或者
res.send("ok");
如果這是從瀏覽器發布的表單,那么您將需要發送回一個 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");
});
您無需對文檔進行任何操作,您需要先保存它,然后再將其發送給客戶端。
發生錯誤時將狀態設置為 500 並向客戶端發送錯誤消息
如果你不熟悉Promises , .then
和 . catch
會讓你感到困惑,花點時間閱讀關於 promise 的鏈接
router.post("/newhobby", (req, res) => {
const newHobby = new Hobbies({
newhobby: req.body.newhobby,
classes: req.body.classes
})
newHobby.save()
.then(res.json)
.catch(e => res.status(500).json({ message: e.message })
})
如果密碼在“<>”狀態內,請檢查“配置/密鑰”中的數據庫。 只需刪除它們並嘗試一下。
"mongodb+srv://user:<password>@cluster..."
到
"mongodb+srv://user:password@cluster..."
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.