英文:
MongoDB hangs without NodeJS Response
问题
我正在尝试从NodeJS运行MongoDB服务器,但我在连接到我的服务器时遇到问题。我已经使用mongod启动了服务器,但当我尝试使用下面的代码连接时,终端会一直挂起,我没有收到“成功连接到服务器”的响应。
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://127.0.0.1:27017'; //localhost
// Database Name
const dbName = 'fruitsDB';
// Create a new MongoClient
const client = new MongoClient(url, { useNewUrlParser: true });
// Use connect method to connect to the Server
client.connect(function(err) {
assert.equal(null, err);
console.log("成功连接到服务器");
const db = client.db(dbName);
client.close();
});
我已确认我的数据库通过mongosh在运行。当我在url中将127.0.0.1替换为“localhost”并尝试连接时,我会收到“错误:MongoNetworkError: connect ECONNREFUSED ::1:27017”的错误消息,这就是我切换到在url中使用127.0.0.1的原因。
是否有人可以帮助解决这个问题?提前感谢!
英文:
I am trying to run a mongoDB server from NodeJS and I am having issues connecting to my server. I have started the server using mongod, but when I try to connect using the code below, the terminal just hangs and I do not get a "Connected successfully to server" response.
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://127.0.0.1:27017'; //localhost
// Database Name
const dbName = 'fruitsDB';
// Create a new MongoClient
const client = new MongoClient(url, {useNewUrlParser: true });
// Use connect method to connect to the Server
client.connect(function(err) {
assert.equal(null, err);
console.log("Connected successfully to server");
const db = client.db(dbName);
client.close();
});
I have confirmed that my db is running through mongosh. When I substitute the 127.0.0.1 for "localhost" in the url and try to connect, I get a "error: MongoNetworkError: connect ECONNREFUSED ::1:27017", which is why I switched to using 127.0.0.1 in the url.
Can anyone please help with this? Thanks in advance!
答案1
得分: 0
根据精细手册,MongoClient.connect()
返回一个 Promise(看起来回调已被弃用)。
此外,从 v4.7 开始,显式调用 connect()
已变为可选。
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// 连接 URL
const url = 'mongodb://127.0.0.1:27017'; //localhost
// 数据库名称
const dbName = 'fruitsDB';
// 创建一个新的 MongoClient
const client = new MongoClient(url, {useNewUrlParser: true });
// 创建一个异步的 IIFE 包装器,以便我们可以使用 `await`
void async function() {
await client.connect();
console.log("成功连接到服务器");
const db = client.db(dbName);
...
await client.close();
}();
(我省略了错误处理,但你可以使用 try/catch
处理错误)。
英文:
According to the fine manual, MongoClient.connect()
returns a Promise (it looks like callbacks have been deprecated).
Also, explicitly calling connect()
has been made optional in v4.7.
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://127.0.0.1:27017'; //localhost
// Database Name
const dbName = 'fruitsDB';
// Create a new MongoClient
const client = new MongoClient(url, {useNewUrlParser: true });
// Create an async IIFE wrapper so we can use `await`
void async function() {
await client.connect();
console.log("Connected successfully to server");
const db = client.db(dbName);
...
await client.close();
}();
(I left out error handling, but you'd use try/catch
for that).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论