我正在尝试创建一个连接到我在ec2实例上托管的mongodb的node.js服务器。我是这样做的:
mongoose.connect("mongodb://username:password@ec2-xx-xx-xxx-xxx.eu-central-1.compute.amazonaws.com:27017/dbname");
db.on('error', err => {
console.log('Mongoose default connection error:', err);
db.close();
});
db.once('open', () => {
console.log(`Mongoose default connection open`);
});
但它一直在说我这个错误:
Mongoose default connection error: { MongoError: failed to connect to server [xxx] on first
connect [MongoError: connect ETIMEDOUT xxx:27017]
at Pool.<anonymous> (/Users/jmisiti/hm-landing/node_modules/mongodb-core/lib/topologies/server.js:336:35)
at emitOne (events.js:115:13)
at Pool.emit (events.js:210:7)
at Connection.<anonymous> (/Users/jmisiti/hm-landing/node_modules/mongodb-core/lib/connection/pool.js:280:12)
at Object.onceWrapper (events.js:318:30)
at emitTwo (events.js:125:13)
at Connection.emit (events.js:213:7)
at Socket.<anonymous> (/Users/jmisiti/hm-landing/node_modules/mongodb-core/lib/connection/connection.js:189:49)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at Socket.emit (events.js:210:7)
at emitErrorNT (internal/streams/destroy.js:62:8)
at _combinedTickCallback (internal/process/next_tick.js:102:11)
at process._tickCallback (internal/process/next_tick.js:161:9)
name: 'MongoError',
message: 'failed to connect to server [xxx] on first connect [MongoError: connect ETIMEDO
UT xxx:27017]' }
我的连接字符串100%确定它有效。我的mongoose版本与我的mongodb版本配合得很好。任何的想法 ? :)
PS:端口在27017上打开,并且已经使用我的mongodb实现了我的一个aws实例。所以我确信它有效。
答案 0 :(得分:1)
确保您已在出站端口中注册了27017
端口在EC2安全组中。
然后尝试访问数据库。如果您已经添加了端口并仍然遇到错误,请检查MongoDB进程是否作为服务运行(即在后台)。如果没有,请关注this procedure
答案 1 :(得分:0)
知道了。我无法从我的localhost连接到我的mongodb服务器(不知道为什么)但是当我从我的ec2实例连接到我的mongodb服务器时,它可以工作。所以没关系:)