Mongoose 连接到Azure CosmosDB

Mongoose 连接到Azure CosmosDB,mongoose,azure-cosmosdb,Mongoose,Azure Cosmosdb,我正在尝试连接到CosmosDB,我使用快速启动中的连接字符串, 它在我的本地主机上运行得很好,但一旦部署,我就会 { name: "MongoError", message: "Database account is not found" } var express = require('express'), mongoose = require('mongoose'); mongoUri = "mongodb://dbaccount:pass@dbhost:port/dbNAME?ssl=

我正在尝试连接到CosmosDB,我使用快速启动中的连接字符串, 它在我的本地主机上运行得很好,但一旦部署,我就会

{
name: "MongoError",
message: "Database account is not found"
}

var express = require('express'),
mongoose = require('mongoose');
mongoUri = "mongodb://dbaccount:pass@dbhost:port/dbNAME?ssl=true';
options = {
"useMongoClient":true,
"promiseLibrary": global.Promise,
"ssl": true
}
mongoose.Promise = global.Promise;

var db = mongoose.connect(mongoUri,options)

我已经检查了连接字符串。我可以在本地主机上连接,也可以使用Robo 3T连接到db。

TL;DR:将Azure上web应用的IP添加到数据库防火墙上的IP访问控制列表中

我遇到了完全相同的问题,我可以在本地连接并使用Robo 3T,但一旦我在Azure上部署了应用程序,我收到了以下错误:

MongoError: Database account is not found
at Function.MongoError.create (D:\home\site\wwwroot\node_modules\mongodb-core\lib\error.js:31:11)
at D:\home\site\wwwroot\node_modules\mongodb-core\lib\connection\pool.js:497:72
at authenticateStragglers (D:\home\site\wwwroot\node_modules\mongodb-core\lib\connection\pool.js:443:16)
at Connection.messageHandler (D:\home\site\wwwroot\node_modules\mongodb-core\lib\connection\pool.js:477:5)
at TLSSocket.<anonymous> (D:\home\site\wwwroot\node_modules\mongodb-core\lib\connection\connection.js:331:22)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at TLSSocket.Readable.push (_stream_readable.js:208:10)
at TLSWrap.onread (net.js:594:20)
所以很有可能Azure上的防火墙设置有问题

对我来说,我禁用了Azure上db的IP访问控制,错误消失了,一切正常。我重新打开了IP访问控制,并从web应用程序添加了IP,以允许访问。这应该能奏效。 我认为您可以从本地主机进行访问,因为您的本地IP已经添加为开发目的的默认IP

有关详细信息,请参阅此Microsoft文档:
TL;DR:将Azure上web应用的IP添加到数据库防火墙上的IP访问控制列表中

我遇到了完全相同的问题,我可以在本地连接并使用Robo 3T,但一旦我在Azure上部署了应用程序,我收到了以下错误:

MongoError: Database account is not found
at Function.MongoError.create (D:\home\site\wwwroot\node_modules\mongodb-core\lib\error.js:31:11)
at D:\home\site\wwwroot\node_modules\mongodb-core\lib\connection\pool.js:497:72
at authenticateStragglers (D:\home\site\wwwroot\node_modules\mongodb-core\lib\connection\pool.js:443:16)
at Connection.messageHandler (D:\home\site\wwwroot\node_modules\mongodb-core\lib\connection\pool.js:477:5)
at TLSSocket.<anonymous> (D:\home\site\wwwroot\node_modules\mongodb-core\lib\connection\connection.js:331:22)
at emitOne (events.js:116:13)
at TLSSocket.emit (events.js:211:7)
at addChunk (_stream_readable.js:263:12)
at readableAddChunk (_stream_readable.js:250:11)
at TLSSocket.Readable.push (_stream_readable.js:208:10)
at TLSWrap.onread (net.js:594:20)
所以很有可能Azure上的防火墙设置有问题

对我来说,我禁用了Azure上db的IP访问控制,错误消失了,一切正常。我重新打开了IP访问控制,并从web应用程序添加了IP,以允许访问。这应该能奏效。 我认为您可以从本地主机进行访问,因为您的本地IP已经添加为开发目的的默认IP

有关详细信息,请参阅此Microsoft文档:
我也有同样的问题。在Azure Cosmos DB中,您只需启用以下功能:


这将允许其他Azure资源(如Web应用程序)访问您的数据库。

我也遇到了同样的问题。在Azure Cosmos DB中,您只需启用以下功能:


这将允许其他Azure资源(如Web应用程序)访问您的数据库。

当您设置Cosmos DB时,您选择了MongoDB API还是DocumentDB API?需要使用MongoDB API。此外,如果您编辑了您的问题并共享了您的连接字符串,这将非常有用。请隐藏/更改真实的数据库名称或访问密钥。在您的示例中,只有dbaccount和dbhost,这还不足以说明是否存在连接字符串格式问题。在设置Cosmos DB时,您选择了MongoDB API还是DocumentDB API?需要使用MongoDB API。此外,如果您编辑了您的问题并共享了您的连接字符串,这将非常有用。请隐藏/更改真实的数据库名称或访问密钥。以你为例,,您只有DbaAccount和dbhost-不足以判断是否存在连接字符串格式问题。这解决了我的问题,但我收到了MongoError:authentication fail,如果有人偶然发现此答案与我的问题相同。这解决了我的问题,但我收到了MongoError:authentication fail有人用我同样的问题偶然发现了这个答案。