猫鼬无法连接(本地主机)
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 并且可以进行查询!
【讨论】:
以上是关于猫鼬无法连接(本地主机)的主要内容,如果未能解决你的问题,请参考以下文章
报错解决telnet时报错:无法打开到主机的连接,在端口23连接失败
运行“远程调试器”时出错:无法打开调试器端口(本地主机:5005):java.net.ConnectException“连接被拒绝(连接被拒绝)”