javascript node.js在连接到本地mongodb后停止

bvjxkvbb  于 2023-05-16  发布在  Java
关注(0)|答案(2)|浏览(110)

我试图连接到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应用程序不能。

sd2nnvve

sd2nnvve1#

你的代码对我来说似乎是正确的,所以我只能提供这些建议:
我做一些容器的东西,通常防火墙会导致数据库连接的问题。确保在您的计算机和数据库上配置了这些。
另外,检查您是否具有从inventory数据库读取的权限。
另一个故障排除步骤是查看cars集合是否确实存在。
您还可以在应用程序上尝试调试器,以查看它究竟在哪里卡住。也许问题出在你的代码里。

cwtwac6a

cwtwac6a2#

我会尝试手动插入一个文档到数据库中,然后看看您的安装程序是否可以读取它。此外,确保服务器运行正确,端口3000上没有其他东西运行,防火墙配置正确等。
您是否正在尝试使用MongoDB跨平台?例如,一个linux终端连接到一个windows托管的mongodb?如果是这样的话,那就行不通了,至少不容易。我遇到过这样一种情况,所有东西看起来都在工作(windows mongodb compass和WSL终端),但实际上没有插入任何文档。这种联系看起来像是存在的,但事实并非如此。我通过使用Windows PowerShell而不是WSL修复了它。当mongodb连接和终端都在Windows上时,它可以工作。

相关问题