使用 M1 Mac 上的 express 连接到 MongoDb 无法正常工作
Connection to MongoDb with express on M1 Mac not working
我用
安装了 mongoDB
brew install mongodb-community@5.0
我从 mongoDB 开始
brew services start mongodb-community@5.0
在 brew services list
我得到:
Name Status User File
emacs stopped
mongodb-community started laurenz ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
unbound stopped
在我的快速服务器上,我使用此代码连接到 mongoDB:
connectToServer: function (callback) {
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
const db = mongoose.connection
db.on('error', (error) => {
console.error(error)
callback(error)
})
}
打开 MongoDB Compass 时,我可以连接到 MongoDB 并且还可以看到我的 table。
相同的代码在我的 Intel iMac 上运行得很好。
这是我在启动 server.js:
时遇到的错误
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at NativeConnection.Connection.openUri (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/connection.js:797:32)
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:332:10
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:1153:10)
at Mongoose.connect (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:331:20)
at Object.connectToServer (/Users/laurenz/uni_workspace/omm-project-ws2122/be/db/conn.js:16:14)
at Server.<anonymous> (/Users/laurenz/uni_workspace/omm-project-ws2122/be/server.js:16:7)
at Object.onceWrapper (node:events:509:28) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
logicalSessionTimeoutMinutes: undefined
}
}
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at NativeConnection.Connection.openUri (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/connection.js:797:32)
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:332:10
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:1153:10)
at Mongoose.connect (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:331:20)
at Object.connectToServer (/Users/laurenz/uni_workspace/omm-project-ws2122/be/db/conn.js:16:14)
at Server.<anonymous> (/Users/laurenz/uni_workspace/omm-project-ws2122/be/server.js:16:7)
at Object.onceWrapper (node:events:509:28) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
logicalSessionTimeoutMinutes: undefined
}
}
node:internal/process/promises:246
triggerUncaughtException(err, true /* fromPromise */);
^
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at NativeConnection.Connection.openUri (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/connection.js:797:32)
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:332:10
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:1153:10)
at Mongoose.connect (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:331:20)
at Object.connectToServer (/Users/laurenz/uni_workspace/omm-project-ws2122/be/db/conn.js:16:14)
at Server.<anonymous> (/Users/laurenz/uni_workspace/omm-project-ws2122/be/server.js:16:7)
at Object.onceWrapper (node:events:509:28) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) {
'localhost:27017' => ServerDescription {
_hostAddress: HostAddress { isIPv6: false, host: 'localhost', port: 27017 },
address: 'localhost:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 47955814,
lastWriteDate: 0,
error: MongoNetworkError: connect ECONNREFUSED ::1:27017
at connectionFailureError (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/node_modules/mongodb/lib/cmap/connect.js:293:20)
at Socket.<anonymous> (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/node_modules/mongodb/lib/cmap/connect.js:267:22)
at Object.onceWrapper (node:events:510:26)
at Socket.emit (node:events:390:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
}
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
logicalSessionTimeoutMinutes: undefined
}
}
Node.js v17.0.1
[nodemon] app crashed - waiting for file changes before starting...
有没有人有类似的问题或知道如何解决这个问题?
所以我想出了问题所在。
我将连接调用替换为:
MongoClient.connect('mongodb://127.0.0.1:27017', (err, client) => {
if (err) return console.error(err)
console.log('Connected to Database')
console.log(client);
})
这似乎可行。我不知道为什么它不能与 localhost 一起使用,但现在它正在工作。
我用
安装了 mongoDBbrew install mongodb-community@5.0
我从 mongoDB 开始
brew services start mongodb-community@5.0
在 brew services list
我得到:
Name Status User File
emacs stopped
mongodb-community started laurenz ~/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
unbound stopped
在我的快速服务器上,我使用此代码连接到 mongoDB:
connectToServer: function (callback) {
mongoose.connect('mongodb://localhost/test', { useNewUrlParser: true });
const db = mongoose.connection
db.on('error', (error) => {
console.error(error)
callback(error)
})
}
打开 MongoDB Compass 时,我可以连接到 MongoDB 并且还可以看到我的 table。 相同的代码在我的 Intel iMac 上运行得很好。
这是我在启动 server.js:
时遇到的错误MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at NativeConnection.Connection.openUri (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/connection.js:797:32)
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:332:10
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:1153:10)
at Mongoose.connect (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:331:20)
at Object.connectToServer (/Users/laurenz/uni_workspace/omm-project-ws2122/be/db/conn.js:16:14)
at Server.<anonymous> (/Users/laurenz/uni_workspace/omm-project-ws2122/be/server.js:16:7)
at Object.onceWrapper (node:events:509:28) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
logicalSessionTimeoutMinutes: undefined
}
}
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at NativeConnection.Connection.openUri (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/connection.js:797:32)
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:332:10
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:1153:10)
at Mongoose.connect (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:331:20)
at Object.connectToServer (/Users/laurenz/uni_workspace/omm-project-ws2122/be/db/conn.js:16:14)
at Server.<anonymous> (/Users/laurenz/uni_workspace/omm-project-ws2122/be/server.js:16:7)
at Object.onceWrapper (node:events:509:28) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) { 'localhost:27017' => [ServerDescription] },
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
logicalSessionTimeoutMinutes: undefined
}
}
node:internal/process/promises:246
triggerUncaughtException(err, true /* fromPromise */);
^
MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at NativeConnection.Connection.openUri (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/connection.js:797:32)
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:332:10
at /Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:32:5
at new Promise (<anonymous>)
at promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/helpers/promiseOrCallback.js:31:10)
at Mongoose._promiseOrCallback (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:1153:10)
at Mongoose.connect (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/lib/index.js:331:20)
at Object.connectToServer (/Users/laurenz/uni_workspace/omm-project-ws2122/be/db/conn.js:16:14)
at Server.<anonymous> (/Users/laurenz/uni_workspace/omm-project-ws2122/be/server.js:16:7)
at Object.onceWrapper (node:events:509:28) {
reason: TopologyDescription {
type: 'Unknown',
servers: Map(1) {
'localhost:27017' => ServerDescription {
_hostAddress: HostAddress { isIPv6: false, host: 'localhost', port: 27017 },
address: 'localhost:27017',
type: 'Unknown',
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 47955814,
lastWriteDate: 0,
error: MongoNetworkError: connect ECONNREFUSED ::1:27017
at connectionFailureError (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/node_modules/mongodb/lib/cmap/connect.js:293:20)
at Socket.<anonymous> (/Users/laurenz/uni_workspace/omm-project-ws2122/be/node_modules/mongoose/node_modules/mongodb/lib/cmap/connect.js:267:22)
at Object.onceWrapper (node:events:510:26)
at Socket.emit (node:events:390:28)
at emitErrorNT (node:internal/streams/destroy:164:8)
at emitErrorCloseNT (node:internal/streams/destroy:129:3)
at processTicksAndRejections (node:internal/process/task_queues:83:21)
}
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
logicalSessionTimeoutMinutes: undefined
}
}
Node.js v17.0.1
[nodemon] app crashed - waiting for file changes before starting...
有没有人有类似的问题或知道如何解决这个问题?
所以我想出了问题所在。
我将连接调用替换为:
MongoClient.connect('mongodb://127.0.0.1:27017', (err, client) => {
if (err) return console.error(err)
console.log('Connected to Database')
console.log(client);
})
这似乎可行。我不知道为什么它不能与 localhost 一起使用,但现在它正在工作。