猫鼬无法连接(本地主机)

Posted

技术标签:

【中文标题】猫鼬无法连接(本地主机)【英文标题】:Mongoose can't connect (localhost) 【发布时间】:2022-01-15 10:41:52 【问题描述】:

我正在尝试使用 Apollo-Server-Express 中的 mongoose 连接到我的数据库。我在终端中创建了一个数据库。我读到'mongodb://localhost:27017/*db-name *' 是 mongoose.connect 作为第一个参数的默认 uri-string。

但是,console.log(mongoose.connection.readyState) 打印出 '2' - 连接。 我会期待'1',对吧? 查询时,服务器冻结,并抛出 ServerSelectionError。 我尝试在 mongoose.connect 语句之前加上 await (正如我在教程中看到的那样),但随后启动过程冻结了。 我缺少什么基本的东西吗? 任何帮助表示赞赏!

const  ApolloServer, gql  = require('apollo-server-express');
const express = require('express');
const mongoose = require('mongoose');

const main = async () => 
  const app = express();

  const server = new ApolloServer(
    typeDefs,
    resolvers,
    introspection: true,
    playground: true,
  );

  await server.start();

  server.applyMiddleware(
    app,
  );

  mongoose.connect('mongodb://localhost:27017/db-name', 
    useUnifiedTopology: true,
    useNewUrlParser: true,
  );

  console.log(mongoose.connection.readyState);

  console.log('MongoDB connected!!');

  app.listen(process.env.PORT || 4000, () => 
    console.log(`????  Server ready at port $process.env.PORT || 4000`);
  );
;

main();

【问题讨论】:

mongod 服务在运行吗?您可能需要打开终端并运行 mongod 命令。 你已经确认你有 mongodb 本身在运行? 【参考方案1】:

感谢你们的 cmets 伙计们! 所以问题是双重的:

    Mongod 确实没有运行。我意识到我得到了一个错误代码 100,这意味着目录 data/db 不存在。 我首先尝试了$ sudo mkdir -p /data/db,但仍然遇到同样的错误。 然后帮助的是在根目录中创建目录并使用$ mongod --dbpath ~/data/db 运行 mongod。这让 MongoDB 运行起来。

但我的服务器仍然存在同样的问题......

    事实证明,在我的例子中,uri 应该是mongodb://127.0.0.1:27017/db-name。如果我现在在 setTimeout 中打印出服务器连接状态,我会得到预期的响应 1 并且可以进行查询!

【讨论】:

以上是关于猫鼬无法连接(本地主机)的主要内容,如果未能解决你的问题,请参考以下文章

Mysql与本地主机连接正常但无法与IP地址连接

离线时无法建立与本地主机的连接

视觉工作室正在运行,但本地主机无法连接

报错解决telnet时报错:无法打开到主机的连接,在端口23连接失败

运行“远程调试器”时出错:无法打开调试器端口(本地主机:5005):java.net.ConnectException“连接被拒绝(连接被拒绝)”

本地主机无法ping通虚拟机主机解决办法