我正在尝试通过Node.js连接到mongo,我收到以下错误:
connection error: { Error: read ECONNRESET
at exports._errnoException (util.js:1022:11)
at TCP.onread (net.js:610:25) name: 'MongoError', message: 'read ECONNRESET' }
(node:3868) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): MongoError: read ECONNRESET
以下是我用来连接的代码:
const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
module.exports = (config) => {
const fs = require('fs');
let key = fs.readFileSync('../server/test/keys/cert_key.pem');
let ca = [fs.readFileSync('../server/test/keys/ca.pem')];
let o = {
server: {
sslValidate: true,
sslCA: ca,
sslKey: key,
sslCert: key
}
};
mongoose.connect(config.connectionString, o);
let database = mongoose.connection;
database.on('error', console.error.bind(console, 'connection error:'))
database.once('open', (error) => {
if (error) {
console.log(error);
return;
}
console.log('MongoDB ready!')
});
require('./../models/Role').initialize();
require('./../models/User');
require('./../models/Item');
require('./../models/character/Character_item');
require('./../models/Article');
require('./../models/Friend_request');
require('./../models/Code');
require('./../models/Ring');
require('./../models/Ring_shop');
require('./../models/Comment');
};
如果我尝试从Robo3T连接到mongo,它可以工作。所以似乎问题出在我的Node代码中。有什么建议吗?
答案 0 :(得分:1)
Accordin mongoDB node driver documentation您必须在服务器选项中传递ssl:true才能通过SSL连接,否则将忽略SSL。
我的标准ssl db选项如下:
server: {
ssl: true,
sslValidate:true,
sslCA: ca,
ca: ca,
sslKey: key,
sslCert: key
}
答案 1 :(得分:0)
确认您的mongodb数据库文件没有损坏。如果.wt
文件已损坏,您将收到该错误。存储路径中的.wt
文件。例如:
storage:
dbPath: E:\Data\mongodb
如果您之前备份,可以使用mongorestore
命令修复数据。否则你可以删除数据库并重新初始化。
答案 2 :(得分:0)
我遇到的问题与在MongoDB提供的云中工作时相同。我发生这种情况的原因是我将家庭IP配置为已连接,而不是工作IP。在云端设置中添加我的工作IP之后,我就可以连接