Node.js"错误:读取ECONNRESET"

时间:2018-01-02 12:50:29

标签: node.js mongodb

我正在尝试通过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代码中。有什么建议吗?

3 个答案:

答案 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之后,我就可以连接