Я изучал NodeJS и mongoDB на YouTube, но, к сожалению, столкнулся с этой проблемой, и вот мой файл кода! заранее спасибо!
db.js
const { MongoClient } = require("mongodb");
let dbConnection;
module.exports = {
connectToDb: (cb) => {
MongoClient.connect("mongodb://localhost:27017/bookstore")
.then((res) => {
dbConnection = res.db();
return cb();
})
.catch((error) => {
console.info(error);
return cb(error);
});
},
getDb: () => dbConnection,
};
index.js
const express = require("express");
const { connectToDb, getDb } = require("./db");
// init app and middleware
const app = express();
//db connection
let db;
connectToDb((xato) => {
if (!xato) {
app.listen(3000, () => {
console.info("The 3000 port is installed");
});
db = getDb();
return db;
}
});
//routes
app.get("/bookstore", (req, res) => {
let mybook = [];
// the collection name from mongoDB
db.collection("bookstore")
.find()
.sort({ author: 1 })
.forEach((book) => mybook.push(book))
.then(() => {
return res.sendStatus(200).json(mybook);
})
.catch(() => {
return res.sendStatus(500).send("there were an error");
});
// res.json({ MyWords: "I am coming from json res" });
});
он должен возвращать данные из локальной базы данных mongodb. Но сталкивается с проблемой. Пожалуйста, дайте мне решение!
🤔 А знаете ли вы, что...
JavaScript обеспечивает обработку ошибок с использованием конструкции try...catch.
и .sendStatus
, и .json
попытаются ответить клиенту. Таким образом, второй вызов приведет к этой ошибке.
Просто используйте res.json(mybook)
и res.send("there were an error")
достаточно.
Если вы хотите сохранить код состояния, а также отправить данные. Используйте res.status(500).send("there were an error")
.