Не удается получить элемент по айди с MongoDB
Первый раз залажу в дела с базами, проблема заключается в том, что не могу получить определенный элемент с полного джсона db.js:
const { MongoClient } = require('mongodb');
const URL = "mongodb://localhost:27017/moviebox";
let dbConnection;
const presets = {
serverSelectionTimeoutMS: 5000,
maxPoolSize: 10,
serverSelectionTimeoutMS: 5000,
socketTimeoutMS: 45000,
family: 4
}
module.exports = {
connectToDb: (cb) => {
MongoClient.connect(URL, presets)
.then((client) => {
console.log('Connected to MongoDB');
dbConnection = client.db();
return cb();
})
.catch((err) => {
return cb(err);
});
},
getDb: () => dbConnection,
};
server.js:
const express = require('express');
const { ObjectId } = require('mongodb');
const { connectToDb, getDb } = require('./db');
const PORT = 3000;
const app = express();
let db;
connectToDb((err) => {
if (!err) {
app.listen(PORT, (err) => {
err ? console.log(err) : console.log(`listening port ${PORT}`);
});
db = getDb();
} else {
console.log(`DB connection error: ${err}`);
}
});
const handleError = (res, error) => {
res.status(500).json({ error });
}
app.get('/movies', (req, res) => {
const movies = [];
db
.collection('movies')
.find()
.sort({ title: 1 })
.forEach((movie) => movies.push(movie))
.then(() => {
res
.status(200)
.json(movies);
})
.catch(() => handleError(res, "Something goes wrong..."));
});
app.get('/movies/:id', (req, res) => {
if (ObjectId.isValid(req.params.id)) {
db
.collection('movies')
.findOne({ _id: ObjectId(req.params.id) })
.then((doc) => {
res
.status(200)
.json(doc);
})
.catch(() => handleError(res, "Something goes wrong..."));
} else {
handleError(res, "Wrong id");
}
});
То есть если обращаться по урлу /movies/ выводит всё и четко, но вот если обращаться по айдишнику вылазит такая ошибка. Подскажите варианты решения
Источник: Stack Overflow на русском