【发布时间】:2020-03-12 05:08:12
【问题描述】:
这是我第一次使用 Node.js、Express 和 MongoDB 构建 REST API。 DB(命名为 API)有两个集合(Articles 和 Sources),Articles 集合中有超过 100k 的文档。每次我将此 GET 请求 http://localhost:3000/Articles/results?limit=10 发送到 Articles 集合时,邮递员都会挂起然后服务器崩溃。值得一提的是,如果我仅使用 _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);
服务器崩溃时出现的错误很长,下面是它的sn-p
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]
【问题讨论】:
标签: node.js mongodb rest express mongoose