«Ошибка: зависание сокета» отображается ошибка при использовании Postman с ReactJS и MongooseDB

#reactjs #mongoose #postman

Вопрос:

Я следую учебнику по настройке приложения React с помощью MongooseDB, Express и т. Д. Я использую Почтальона для ПОЛУЧЕНИЯ, ОТПРАВКИ. См. Код ниже (я выделил пароль из строки базы данных).

Когда я пошлю, ПОЛУЧИТЕ HTTP://localhost:8001 он показывает «привет, мир», которого я ожидаю.

Когда я пошлю, ПОЛУЧИТЕ HTTP://localhost:8001/tinder/cards он зависает и в конечном итоге выводит сообщение об ошибке «Ошибка: зависание сокета».

Когда я отправляю ПОЧТУ HTTP://localhost:8001/tinder/cards он зависает и в конечном итоге выдает 500 внутренних ошибок сервера.

Может ли кто-нибудь указать мне, в каком направлении отлаживать, пожалуйста? Я предполагаю, что соединение работает так же, как при отправке GET HTTP://localhost:8001 он показывает «привет, мир».

Еще раз спасибо.

 import express from 'express'
import mongoose from 'mongoose'
import Cards from './dbCards.js'
import Cors from 'cors'

// App Config
const app = express();
const port = process.env.PORT || 8001
const connection_url = `mongodb srv://admin:*******@cluster0.iyemf.mongodb.net/tinder-db?retryWrites=trueamp;w=majority`

// middlewares
app.use(express.json())
app.use(Cors())

// db config
mongoose.connect(connection_url, {
    useNewUrlParser: true,
    useCreateIndex: true,
    useUnifiedTopology:true,
})

// api endpoints
app.get('/', (req, res) =>  res.status(200).send("hello world"));


app.post('/tinder/cards', (req, res) => {
    const dbCard = req.body;

    Cards.create(dbCard, (err, data) => {
        if (err) {
            res.status(500).send(err)
        } else {
            res.status(201).send(data)
        }
    })
})

app.get("/tinder/cards", (req, res) => {
    Cards.find((err, data) => {
        if (err) {
            res.status(500).send(err)
        } else {
            res.status(200).send(data)
        }
    });
});

// listener
app.listen(port, () => console.log(`listening on localehost: ${port}`)); 
 

Ответ №1:

Вы также должны добавить urlencoded промежуточное программное обеспечение:

 app.use(express.json());
app.use(express.urlencoded({
    extended: true,
}));