Azure 猫鼬连接宇宙数据库

Azure 猫鼬连接宇宙数据库,azure,mongoose,azure-cosmosdb,Azure,Mongoose,Azure Cosmosdb,如何使用选项连接到ComosDB(Mongo API) "options": { "ssl": true, "server": { "socketOptions": { "keepAlive": 300000, "connectTimeoutMS": 30000 } }, "replset": { "socketOptions": { "keepAlive": 300000, "connectTimeoutM

如何使用选项连接到ComosDB(Mongo API)

"options": {
  "ssl": true,
  "server": {
    "socketOptions": {
      "keepAlive": 300000,
      "connectTimeoutMS": 30000
    }
  },
  "replset": {
    "socketOptions": {
      "keepAlive": 300000,
      "connectTimeoutMS": 30000
    }
  }
}
我试图连接
mongoose.connect(uri,选项)
,但收到500个错误

err:  { MongoError: connection 0 to xName.documents.azure.com:port timed out
    at Function.MongoError.create (/home/mic3ael/src/prizmacloud/node_modules/mongodb-core/lib/error.js:29:11)
    at Socket.<anonymous> (/home/mic3ael/src/prizmacloud/node_modules/mongodb-core/lib/connection/connection.js:188:20)
    at Object.onceWrapper (events.js:314:30)
    at emitNone (events.js:105:13)
    at Socket.emit (events.js:207:7)
    at Socket._onTimeout (net.js:401:8)
    at ontimeout (timers.js:488:11)
    at tryOnTimeout (timers.js:323:5)
    at Timer.listOnTimeout (timers.js:283:5)
  name: 'MongoError',
  message: 'connection 0 to xName.documents.azure.com:port timed out' }
err:{MongoError:0到xName.documents.azure.com的连接:端口超时
在Function.MongoError.create(/home/mic3ael/src/prizmacloud/node_modules/mongodb core/lib/error.js:29:11)
在套接字上。(/home/mic3ael/src/prizmacloud/node_modules/mongodb core/lib/connection/connection.js:188:20)
在Object.onceWrapper(events.js:314:30)
在emitNone(events.js:105:13)
在Socket.emit(events.js:207:7)
在Socket.\u onTimeout(net.js:401:8)
在ontimeout(timers.js:488:11)
在tryOnTimeout(timers.js:323:5)
at Timer.listOnTimeout(timers.js:283:5)
名称:“MongoError”,
消息:“0到xName.documents.azure.com的连接:端口超时”}
当我添加到
uri
string
?ssl=true
作为一个没有options param的字符串时,它工作得很好,否则当我将{ssl=true}作为一个对象作为options param传递时,它就不工作了

mongoose版本是
“mongoose”:“~4.9.1”

问题是如何将选项作为azure CosmosDB的选项参数或字符串添加到对象中

谢谢,迈克尔

请尝试将
“ssl”:true,
移动到
服务器
对象

"options": {  
  "server": {
    "ssl": true,
    "socketOptions": {
      "keepAlive": 300000,
      "connectTimeoutMS": 30000
    }
  },
  "replset": {
    "socketOptions": {
      "keepAlive": 300000,
      "connectTimeoutMS": 30000
    }
  }
}

我刚刚找到了解决方案:

   const qs = require('qs');


  mongoose.connect(`mongodb://${config.username}:${config.password}@${config.host}:${config.port}/${config.database}?${qs.stringify(config.options)}`)
它用选项字符串连接uri


Michael。

你也可以粘贴你的
uri
字符串而不包含真实的凭据吗?你好,Michael,我正试图按照你的建议创建一个到Cosmos DB的连接,如下所示:mongoose.createConnection(config.DB.scrasting+“&”+qs.stringify({server:{socketOptions:{keepAlive:300000,connectTimeoutMS:300000,socketTimeoutMS:300000}}})但是,我仍然收到超时错误。您有什么建议吗?特别是我想了解您的config.options参数。您能提供帮助吗?这是config.db.scraping值:mongodb://yyy@aaa.documents.azure.com:10255/bbb?ssl=true&replicaSet=globaldbI通过将参数直接添加到连接字符串中解决了我的问题,如下所示:mongodb://aaa:bbb@ccc.documents.azure.com:10255/ddd?ssl=true&keepAlive=300000&connectTimeoutMS=300000&socketTimeoutMS=300000