[英]res.send() is not giving response on POST request in POSTMAN
hy,我正在學習 nodeJS,但是當使用 postman 發布數據時,數據保存在 db 中,但未在 POSTMAN 中顯示響應。 在 postman 上只顯示發送請求......
const express = require("express")
const app = express()
// dbConnection
require('./mongo')
// Models
require('./model/Post')
// MIDDLEWARE
app.use(express.urlencoded({extended: true}));
app.use(express.json())
const mongoose = require('mongoose')
const Post = mongoose.model("Post")
// POST REQUEST
app.post('/posts', async (req, res)=>{
// res.send(req.body)
try{
const post = new Post()
post.title = req.body.title
post.content = req.body.content
data = await post.save()
res.json(data)
}catch(error){
res.status(500)
}
})
app.listen(8000, ()=>{
console.log('Server is running on port:8000')
})
我認為您甚至沒有在端口上運行,它在這里說
console.log('Server is running on port:8000')
})
你所做的只是 console.log 服務器在端口 8000 上運行,沒有反勾號,因此你甚至沒有運行你的服務器。 這就是為什么我認為您的代碼不起作用的原因,請對其進行測試並查看,如果出現錯誤,則可以從那里進行調試。 至少在調試上投入一些精力,而不是立即進行堆棧溢出。 用這個替換你對端口所做的事情
// Create a variable called port and set it to your desired port
const port = 8000;
// Then hook it up to express.
console.log(`Server is running on port: ${port}`)
})
如果問題仍然存在,那么我認為我有解決方案
const express = require("express")
const app = express()
// dbConnection
require('./mongo')
// Models
require('./model/Post')
// MIDDLEWARE
app.use(express.urlencoded({extended: true}));
app.use(express.json())
const mongoose = require('mongoose')
const Post = mongoose.model("Post")
// Hook it up to res
const port = 8000
// POST REQUEST
app.post('/posts', async (req, res)=>{
// res.send(req.body)
try{
const post = new Post()
post.title = req.body.title
post.content = req.body.content
data = await post.save()
res.json(data)
}catch(error){
res.status(500)
}
})
// Mongoose Connection
mongoose
.connect("your connection (it should be connection to application on mongo)", {
useNewUrlParser: true,
useUnifiedTopology: true,
useFindAndModify: true
})
.then(() => {
console.log("Connected to the database");
})
.catch((err) => {
console.log(err);
});
app.listen(8000, ()=>{
console.log(`Server is running on port: ${port}`)
})
然后,一旦你完成了,你就建立了到 mongodb 服務器的連接,並且應該發送請求以發布
我認為catch
塊已執行。 在此塊中,您僅將響應的狀態設置為 500,但實際上並未將響應發送給客戶端。 這就是 Postman 屏幕一直阻塞的原因。
所以,有兩件事:
app.post('/posts', async (req, res)=>{
// res.send(req.body)
try{
const post = new Post()
post.title = req.body.title
post.content = req.body.content
data = await post.save()
res.json(data)
}catch(error){
console.log(error);// for debugging
res.status(500).send("ERROR_SERVER"); // send something to client
}
})
正如我在舊答案中所說,我已經找到了您的錯誤的答案,運行您的測試會有效,並向您顯示錯誤,但是我找到了答案,我假設您已經找到了解決方案(即可能與我的解決方案相同)但如果你沒有這就是問題所在。
這很簡單,在需要 mongoose require('./mongo'); const mongoose = require('mongoose')
require('./mongo'); const mongoose = require('mongoose')
這是錯誤的,因為 JavaScript 和大多數編程語言逐行讀取代碼(如果不是全部),因此將其更改為以下內容:
const mongoose = require('mongoose');
require('./mongo');
在需要 package 之前創建變量,如下所示(在您的代碼示例中):
const mongoose = require('mongoose');
require('./mongo');
如果您確實有更多問題,請嘗試重新安裝/更新 mongoose 的 package 依賴項,如下所示:
yarn add mongoose
或者
npm install mongoose
如果您仍然有問題,我唯一可以要求您做的就是更改代碼行
require('./mongo');
要么
require('./{filename}'); // Whatever the actual filename is.
或者:
require('./mongoose');
即使我的問題對您的代碼不起作用,請務必將錯誤消息或錯誤消息的重要部分粘貼到問題中,否則這會使您很難查明您的錯誤是什么。 這樣可以更輕松地為您的代碼找到解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.