Node.Js 和 MongoDB Compass 连接错误

标签 node.js typescript mongodb mongoose mongodb-compass

我正在尝试连接到 MongoDB Compass。 我使用 Typescript、Node.Js 和 Mongoose 进行连接,但是在尝试连接时遇到错误。

这是我的 mongo 连接代码

const url ='mongodb://localhost:27017/BlogApp';

mongoose.connect(url)
.then(() => {console.log("Connected to MongoDB")})
.catch((err) => console.log(err));

 //*** BEEP BOOP ***//
 app.listen(PORT, () => {
    console.log(`Your server available at http://localhost:${PORT}`);
})

我的服务器正常启动并正常运行,但是与 MongoDB 的连接给了我这个巨大的错误,我不知道出了什么问题。

    MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
    at NativeConnection.Connection.openUri (C:\Users\Filda\Desktop\Node.Js\InstaClone\backend\node_modules\mongoose\lib\connection.js:819:32)
    at C:\Users\Filda\Desktop\Node.Js\InstaClone\backend\node_modules\mongoose\lib\index.js:377:10
    at C:\Users\Filda\Desktop\Node.Js\InstaClone\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
    at new Promise (<anonymous>)
    at promiseOrCallback (C:\Users\Filda\Desktop\Node.Js\InstaClone\backend\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)
    at Mongoose._promiseOrCallback (C:\Users\Filda\Desktop\Node.Js\InstaClone\backend\node_modules\mongoose\lib\index.js:1220:10)
    at Mongoose.connect (C:\Users\Filda\Desktop\Node.Js\InstaClone\backend\node_modules\mongoose\lib\index.js:376:20)
    at Object.<anonymous> (C:\Users\Filda\Desktop\Node.Js\InstaClone\backend\index.ts:31:10)
    at Module._compile (node:internal/modules/cjs/loader:1112:14)
    at Module.m._compile (C:\Users\Filda\Desktop\Node.Js\InstaClone\backend\node_modules\ts-node\src\index.ts:1597:23) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) { 'localhost:27017' => [ServerDescription] },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    logicalSessionTimeoutMinutes: undefined
  },
  code

我使用与其他项目相同的设置(我刚刚复制了代码),但这次它无法连接。 我的旧项目使用相同的后端设置,这次我只为 typescript 重写了它。

最佳答案

我不知道您使用的是 mongoose 或 mongoDB 的哪个版本,但您需要告诉 mongoose 如何“查找”连接,以便您的代码应如下所示。我不太确定它到底是如何工作的,但是你需要告诉 Mongoose 使用 IPv4 而不是 IPv6 来查看(不知道到底为什么)

const url = 'mongodb://localhost:27017/BlogApp';
const options = {
    useNewUrlParser: true,
    useUnifiedTopology: true,
    family: 4 // Use IPv4, skip trying IPv6
}
mongoose.Promise = global.Promise;
mongoose.connect(url!, options)
.then(() => {console.log("Connected to MongoDB")})
.catch((err) => console.log(err));


 //*** BEEP BOOP ***//
 app.listen(PORT, () => {
    console.log(`Your server available at http://localhost:${PORT}`);
})

关于Node.Js 和 MongoDB Compass 连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72922075/

相关文章:

mongodb - 如何在 Mongo 聚合中合并文档中的数组字段

MongoDB : create a view which is the union of several collections

javascript - 如何在 JavaScript 中编辑树莓派的 IP 地址?

javascript - 在 Typescript 中向 Observable 添加类型的简写

c# - FileReader 不是用 Angular 服务器端渲染定义的

mongodb - Mongo Oplog 可尾游标

javascript - 如何使用 Node js api 将 JavaScript 文件对象上传到 Cloudinary?

javascript - 使用 Node.js 每分钟发出一次请求

node.js - 在 Electron 中禁用 windows 键

reactjs - Next.js:使用带有 TypeScript 的 next-redux-wrapper 在 getServerSideProps 中调用 Thunks?