Я впервые создаю REST API с Node.js, Express и MongoDB. БД (называемая API) имеет две коллекции (Статьи и Источники) с более чем 100 тысячами документов в коллекции Статей. Каждый раз, когда я отправляю этот запрос GET http://localhost:3000/Articles/results?limit=10
в коллекцию «Статьи», почтальон зависает, а затем происходит сбой сервера. На заметку, если я отправлю запрос на получение только с _id
, он вернет документ. Ниже приведен мой код
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'))
Маршруты
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(400).json({message: err.message})
}
})
//Getting One Article
router.get('/:id', getArticle, (req, res) => {
res.json(res.article)
})
async function getArticle(req, res, next) {
let article
try{
article = await Article.findById(req.params.id)
if (article == null) {
return res.status(404).json({ message: 'Cannot find article'})
}
} catch(err) {
return res.status(500).json({ message: err.message })
}
res.article = article
next()
}
module.exports = router
Модель
const mongoose = require('mongoose')
var 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('Articles', articlesSchema);
Ошибка, возникающая при длительном сбое сервера, ниже приведен фрагмент
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]