【问题标题】:Why can't my azure web app connect to the cosmos db database?为什么我的 azure Web 应用无法连接到 cosmos db 数据库?
【发布时间】:2019-02-11 15:34:29
【问题描述】:

我一直在尝试将基于 React 的应用程序部署到 Azure,并使用 express 和 mongoose 将其连接到同一资源包中的 cosmosdb。当我在本地运行我的应用程序时连接到云 cosmosdb 时,它可以工作。当我从 azure web 应用程序连接到一个也可以工作的 mlab 数据库时。当我尝试从部署在 azure 上的 webapp 连接到 cosmosdb 时,连接超时。我无法获取 azure 资源进行交流!

我在我的数据库的预览设置中启用了 MongoDB 3.4 有线协议,但这并没有解决问题。 这是我的连接代码。

const mongoUri=mongodb://${process.env.dbName}.documents.azure.com:${process.env.cosmosPort}/?ssl/=true&sslverifycertificate=false`;

mongoose.connect(mongoUri,{ auth: { user: process.env.dbName, password: 
process.env.key }, useNewUrlParser: true }).then(() => 
console.log('connection successful'))
.catch((err) => console.error(err));

我希望这会打开与 cosmosdb 的连接,但日志流显示 mongo 错误连接超时

【问题讨论】:

  • 你检查过这个吗?:stackoverflow.com/questions/48994974/…
  • 是的,向防火墙添加了规则,即使将其关闭,问题仍然存在。
  • 您是否在使用应用服务的环境变量?可以console.log(mongoUri);吗?
  • 是的,已经在应用程序设置中设置了变量,并将 mongo uri 输出到日志流
  • 关闭防火墙后,您是否等了大约 10 分钟才重试?防火墙规则可能需要一些时间才能应用。此外,Cosmos DB Azure 门户中有一个特定的复选框来启用 Azure 数据中心(例如应用服务)。

标签: node.js reactjs azure azure-cosmosdb


【解决方案1】:

当我将连接代码更改为时,这开始起作用了-

mongoose.connect(mongoUri,{ useNewUrlParser: true }).then(() => 
console.log('connection successful'))
.catch((err) => console.error("Ahhhgh! "+ err));`

在哪里,

const mongoUri = `mongodb://${process.env.dbName}: 
${process.env.key}@${process.env.dbName}.documents.azure.com:10255/mean? 
ssl=true&sslverifycertificate=false`

带有@。 我在过去几天的疯狂研究似乎表明这意味着我正在使用的 Mongoose 或 Mongodb 版本比它应该的旧。感谢 cmets。

【讨论】:

    猜你喜欢
    • 2018-09-24
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多