当前位置: 首页 > 知识库问答 >
问题:

使用MongoDB API连接到CosmosDB时出现超时错误

裴俊雅
2023-03-14

我目前正在通过以下教程学习如何通过mongodb API使用Azure的cosmosdb:https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-develop-mongoDB-react

本教程的最终repo在这里:https://github.com/azure-samples/react-cosmosdb,但到目前为止,我只是在第5部分中尝试连接到cosmos数据库。

我在mongoose版本中遇到了一个问题,并用以下代码替换了repo代码:连接到Azure的错误:mongoose 5.0.1的密码中存在非法字符,但在4.13.9中工作

我还将我所需的mongodb版本降级到2.2.33,因为新版本的mongo似乎不起作用。(请参见下面的注释:https://docs.microsoft.com/en-us/azure/cosmos-db/mongoDb-mongoose)

这两个问题似乎解决了我的一些错误,但我仍然无法解决以下问题:

    { MongoError: failed to connect to server [react-cosmos-db-tori.documents.azure.com:10255] on first connect [MongoError: connection 0 to react-cosmos-db-tori.documents.azure.com:10255 timed out]
[1]     at Pool.<anonymous> (/Users/vhenri/Documents/dev/azure-app-service/azure-heros/server/node_modules/mongoose/node_modules/mongodb-core/lib/topologies/server.js:336:35)
[1]     at emitOne (events.js:116:13)
[1]     at Pool.emit (events.js:211:7)
[1]     at Connection.<anonymous> (/Users/vhenri/Documents/dev/azure-app-service/azure-heros/server/node_modules/mongoose/node_modules/mongodb-core/lib/connection/pool.js:280:12)
[1]     at Object.onceWrapper (events.js:317:30)
[1]     at emitTwo (events.js:126:13)
[1]     at Connection.emit (events.js:214:7)
[1]     at TLSSocket.<anonymous> (/Users/vhenri/Documents/dev/azure-app-service/azure-heros/server/node_modules/mongoose/node_modules/mongodb-core/lib/connection/connection.js:199:10)
[1]     at Object.onceWrapper (events.js:313:30)
[1]     at emitNone (events.js:106:13)
[1]     at TLSSocket.emit (events.js:208:7)
[1]     at TLSSocket.Socket._onTimeout (net.js:407:8)
[1]     at ontimeout (timers.js:475:11)
[1]     at tryOnTimeout (timers.js:310:5)
[1]     at Timer.listOnTimeout (timers.js:270:5)
[1]   name: 'MongoError',
[1]   message: 'failed to connect to server [react-cosmos-db-tori.documents.azure.com:10255] on first connect [MongoError: connection 0 to react-cosmos-db-tori.documents.azure.com:10255 timed out]' }

据我所知,这只是一个超时,因为它不能连接到我的数据库。

const mongoose = require('mongoose');
const env = require('./env/environment');

mongoose.Promise = global.Promise;

function connect() {
return(
    mongoose.connect('mongodb://react-cosmos-db-tori.documents.azure.com:10255/react-cosmos-db-tori?ssl=true', {
        auth: {
        user: 'react-cosmos-db-tori',
        password: '<mypasswordhere>'
        }
    })
    .then(() => console.log('connection successful'))
    .catch((err) => console.log(err))
 )
}
module.exports = {
  connect,
  mongoose
};

{
  "name": "express-react-starter",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "body-parser": "^1.17.2",
    "cookie-parser": "^1.4.3",
    "debug": "~2.6.3",
    "express": "^4.15.3",
    "jade": "^1.11.0",
    "mongodb": "^2.2.33",
    "mongoose": "^5.0.7",
    "morgan": "^1.8.2",
    "react": "^15.6.1",
    "react-dom": "^15.6.1"
  },
  "devDependencies": {
    "concurrently": "^3.5.0",
    "nodemon": "^1.12.0",
    "react-scripts": "1.0.10"
  },
  "scripts": {
    "start": "concurrently \"react-scripts start\" \"nodemon server/server.js\"",
    "build": "react-scripts build && mv build server",
    "test": "react-scripts test --env=jsdom",
    "eject": "react-scripts eject"
  },
  "proxy": "http://localhost:3001"
}
DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/connections.html#use-mongo-client

我想这可能是连接url中的databasename的问题,所以我创建了一个名为heroes_test的集合,并尝试使用mongoDB://react-cosmos-db-tori.documents.azure.com:10255/heroes_test?ssl=true,但发生了同样的事情。

有人知道这是怎么回事吗?我是不是用错了promise?任何帮助都将不胜感激!

共有1个答案

谷梁镜
2023-03-14

对于任何可能遇到类似问题的人来说,我终于想通了!问题出在我工作时的防火墙上--它阻止了我与COSMOSDB的连接。当我从家里的互联网上尝试它时,它工作得很好。

 类似资料:
  • 我目前正试图找到一个替代我的android应用程序后端。目前,我使用php servlets查询Mysql数据库。数据库(Mysql)托管在我学院的一台计算机上,所以我不能更改任何配置,因为我不是管理员。我只能编辑自己的表。 我试图使用以下代码创建一个java RESTful服务器:

  • 我尝试执行下面的python代码 最后一个语句通过以下连接错误。

  • 我正在尝试使用solrj CloudSolrClient连接到solrCloud,但出现了错误。 用于直接调用单个solr节点,现在切换到solrcloud。我已经尝试了各种不同的url格式,如在线文档中指定的。 使用以下zkHost字符串时,我会发现各种错误。 主持人:2181 2019-08-21 15:53:17错误o. a. c. c.C.[.[.[.[.a. d. n. s.超文本传输协

  • 我正试图用下面给出的代码,用pyodbc从SQL数据库中提取数据。连接很少工作,大多数时候会出错, OperationalError:(“HYT00”,“[HYT00][Microsoft][ODBC SQL Server驱动程序]登录超时过期(0)(SQLDriverConnect)”) 在使用SQL Server 2014时,我尝试将超时设置为零和Driver={SQL Server的ODBC

  • 我在用NodeMailer发邮件。我一直在成功地使用我的gmail帐户发送电子邮件。我刚刚通过GoDaddy转到了我的域名自定义电子邮件。此电子邮件通过Hotmail运行。现在我已经做了这个切换,我得到的错误是:每次连接超时。Gmail还能用,但我不能用hotmail。 有什么解决方法吗?NodeMailer有什么更好的电子邮件选择吗? 这是我的设置:

  • 我将kafka-connect docker映像()部署到ECS/fargate,为我的ECS服务分配了一个安全组,该安全组允许传入的zooper keeper和kafka bootstrap服务器通信量(纯文本和TLS),并分配了一个IAM角色,该角色允许我的ECS任务对MSK集群运行kafka操作,但connect集群在尝试从MSK集群获取代理列表时仍会超时。 在AWS中,kafka conn