我正在将Azure Cosmos DB与mongodb后端一起使用。我不断收到此错误。

Exception has occurred: Error
TypeError: Cannot read property 'electionId' of undefined
at ReplSetState.update (c:\dev\3dshoppers.backend\node_modules\mongodb-core\lib\topologies\replset_state.js:371:70)
at Server._handleEvent (c:\dev\3dshoppers.backend\node_modules\mongodb-core\lib\topologies\replset.js:421:45)
at Server.g (events.js:291:16)
at emitOne (events.js:96:13)
at Server.emit (events.js:188:7)
at c:\dev\3dshoppers.backend\node_modules\mongodb-core\lib\topologies\server.js:297:14
at c:\dev\3dshoppers.backend\node_modules\mongodb-core\lib\connection\pool.js:457:18
at _combinedTickCallback (internal/process/next_tick.js:73:7)
at process._tickCallback (internal/process/next_tick.js:104:9)

我正在使用mongodb@2.2.19。如果将npm软件包更新到最新版本,则会收到其他错误(“MongoError:池已破坏”)。我认为Cosmos DB有一些问题……

这发生在replset_state.js的这一行上。
var currentElectionId = self.set[self.primary.name.toLowerCase()].electionId;

编辑:我能够与下面的两个文件重现该错误。

server.js
// packages
const express = require('express');
const http = require('http');
const MongoClient = require('mongodb').MongoClient;

// express app
const app = express();
// mongodb
const mongoConnectionString = process.env.MONGODB_CONNECTION_STRING;
const mongoOptions =
{
    connectTimeoutMS: 0
}

var mongoDB;
var myCollection;

MongoClient.connect(mongoConnectionString, (err, db) => {

    if (err) throw err;

    mongoDB = db.db('testdb');

    mongoDB.collection('cars', (err, collection) => {
            if (err) throw err;
            myCollection = collection;
        });

        http.createServer(app).listen(process.env.PORT || 3000);
});

package.json
{
    "name": "mongodb-debug",
    "description": "mongodb debugging",
    "version": "0.0.1",
    "private": true,
    "license": "MIT",
    "author": "me",
    "engines": {
        "node": "6.9.3"
    },
    "dependencies": {
        "express": "4.15.2",
        "mongodb": "2.2.19"
    },
    "scripts": {
        "start": "node server.js",
        "test": "mocha"
    }
}

最佳答案

如果您不使用副本集并且仅具有单个Cosmos数据库实例,则可以通过从连接字符串中删除&replicaSet=globaldb来避免此问题。

可以在这里找到类似的问题:MongoError: Pool Destroyed

10-04 11:51
查看更多