Я пытаюсь создать REST API с помощью Node.js, Express и MongoDB. Кажется, все работает до сих пор. Сервер запускается и подключается к БД. БД (называемая API) имеет две коллекции (Статьи и Источники). Я пытаюсь отправить запрос GET в коллекцию статей. Однако, когда я отправляю запрос, Почтальон как бы зависает, а затем выдает это сообщение об ошибке и приводит к сбою сервера:
Could not get any response
There was an error connecting to localhost:3000/articles.
Why this might have happened:
The server couldn't send a response:
Ensure that the backend is working properly
Self-signed SSL certificates are being blocked:
Fix this by turning off 'SSL certificate verification' in Settings > General
Proxy configured incorrectly
Ensure that proxy is configured correctly in Settings > Proxy
Request timeout:
Change request timeout in Settings > General
Сервер выдает следующие ошибки при сбое:
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
1: 0x10007e891 node::Abort() [/usr/local/Cellar/node/13.8.0/bin/node]
2: 0x10007e9c0 node::OnFatalError(char const*, char const*) [/usr/local/Cellar/node/13.8.0/bin/node]
3: 0x10017e6ab v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [/usr/local/Cellar/node/13.8.0/bin/node]
Мой код выглядит следующим образом:
require('dotenv').config()
const express = require('express')
const app = express()
const mongoose = require('mongoose')
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true , useUnifiedTopology: true })
const db = mongoose.connection
db.on('error', (error) => console.error(error))
db.once('open', () => console.log('Connected to Database'))
app.use(express.json())
const articlesRouter = require('./routes/articles')
app.use('/articles', articlesRouter)
app.listen(3000, () => console.log('Server Started'))
Мои маршруты; Я пытаюсь отправить запрос GET, чтобы получить все статьи в БД (которые находятся в коллекции статей):
const express = require('express')
const router = express.Router()
const Article = require('../models/articles')
//Getting All Articles
router.get('/', async (req, res) => {
try {
const articles = await Article.find()
res.json(articles)
} catch (err){
res.status(500).json({message: err.message})
}
})
//Getting One Article
router.get('/:id', (req, res) => {
})
module.exports = router
Если я поменяю router.get
на этот router.get('/articles', async (req, res)
Почтальон больше не будет завис, но выкинь следующую ошибку:
<code><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /articles
И мои маршруты:
const mongoose = require('mongoose')
const articlesSchema = new mongoose.Schema({
author: String, content: String, description: String, publishedAt: Date, source_id: String, summarization: String, title: String, url: String, urlToImage: String}, { collection: 'Articles'});
module.exports = mongoose.model('article', articlesSchema)
Как я уже упоминал в начале, это моя первая попытка построить REST API. Будем весьма благодарны за любую помощь, которую вы можете оказать, чтобы выяснить, почему GET-запрос Postman не выполняется.