我试图连接到mongodb上的数据库并从中获取一些数据。但是在建立连接之后,终端就停止了,我必须按ctrl+C。
这是我的代码
const express = require('express');
const mongoose = require('mongoose');
const app = express();
const port = 3000;
const dbName = 'inventory';
const dbUrl = `mongodb://localhost:27017/${dbName}`;
// Define the schema and model for the "cars" collection
const carSchema = new mongoose.Schema({
make: String,
model: String,
year: Number
});
const Car = mongoose.model('Car', carSchema);
// Connect to the MongoDB server
mongoose.connect(dbUrl, { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
console.log(`Connected to database '${dbName}'`);
// Define a GET route handler that fetches all cars from the database
app.get('/cars', async (req, res) => {
try {
const cars = await Car.find();
console.log(cars); // Log the fetched cars to the console
res.json(cars);
} catch (err) {
console.error(err);
res.status(500).send('Server error');
}
});
// Start the Express app
app.listen(port, () => {
console.log(`Server is listening on port ${port}`);
});
})
.catch((err) => {
console.error(err);
});
我知道我已经建立了连接,因为我在我的控制台中得到了这个
{"t":{"$date":"2023-05-13T21:12:56.152-06:00"},"s":"I", "c":"NETWORK", "id":51800, "ctx":"conn29","msg":"client metadata","attr":{"remote":"127.0.0.1:53075","client":"conn29","doc":{"driver":{"name":"nodejs|Mongoose","version":"5.3.0|7.1.1"},"platform":"Node.js v16.17.1, LE","os":{"name":"win32","architecture":"x64","version":"10.0.19045","type":"Windows_NT"}}}}
{"t":{"$date":"2023-05-13T21:13:06.654-06:00"},"s":"I", "c":"NETWORK", "id":22943, "ctx":"listener","msg":"Connection accepted","attr":{"remote":"127.0.0.1:53096","uuid":"9611eab4-7a75-49a0-9b44-d644599fe37c","connectionId":30,"connectionCount":18}}
{"t":{"$date":"2023-05-13T21:13:06.656-06:00"},"s":"I", "c":"NETWORK", "id":51800, "ctx":"conn30","msg":"client metadata","attr":{"remote":"127.0.0.1:53096","client":"conn30","doc":{"driver":{"name":"nodejs|Mongoose","version":"5.3.0|7.1.1"},"platform":"Node.js v16.17.1, LE","os":{"name":"win32","architecture":"x64","version":"10.0.19045","type":"Windows_NT"}}}}
我也在我的控制台日志中
Connected to database 'inventory'
Server is listening on port 3000
我觉得问题出在我的机器上,因为我不知道还能尝试什么。我以前遇到过一个问题,我的python应用程序可以连接到我的mongodb,但我的node.js应用程序不能。
2条答案
按热度按时间sd2nnvve1#
你的代码对我来说似乎是正确的,所以我只能提供这些建议:
我做一些容器的东西,通常防火墙会导致数据库连接的问题。确保在您的计算机和数据库上配置了这些。
另外,检查您是否具有从
inventory
数据库读取的权限。另一个故障排除步骤是查看
cars
集合是否确实存在。您还可以在应用程序上尝试调试器,以查看它究竟在哪里卡住。也许问题出在你的代码里。
cwtwac6a2#
我会尝试手动插入一个文档到数据库中,然后看看您的安装程序是否可以读取它。此外,确保服务器运行正确,端口3000上没有其他东西运行,防火墙配置正确等。
您是否正在尝试使用MongoDB跨平台?例如,一个linux终端连接到一个windows托管的mongodb?如果是这样的话,那就行不通了,至少不容易。我遇到过这样一种情况,所有东西看起来都在工作(windows mongodb compass和WSL终端),但实际上没有插入任何文档。这种联系看起来像是存在的,但事实并非如此。我通过使用Windows PowerShell而不是WSL修复了它。当mongodb连接和终端都在Windows上时,它可以工作。