簡體   English   中英

res.send() 沒有對 POSTMAN 中的 POST 請求做出響應

[英]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}`)
})

如果問題仍然存在,那么我認為我有解決方案

  1. 檢查您是否安裝了 mongoose 和 express (它是 npm i mongoose express)
  2. 我認為你甚至沒有連接到你的 mongoose 服務器,試試這個
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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM