我正在尝试连接到CosmosDB,我使用Quick Start中的连接字符串, 它在我的本地主机上工作正常但是一旦部署我得到
{
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)
我检查了连接字符串。我可以在我的localhost上连接,也可以使用Robo 3T连接到db。
答案 0 :(得分:3)
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上的数据库上禁用了我的IP访问控制,错误消失了,所有内容都按预期工作。我重新启用了IP访问控制,并从Web应用程序添加了IP,以允许访问。这应该够了吧。 我认为您可以从本地主机访问,因为您的本地IP已被添加为默认用于开发目的。
有关详细信息,请参阅此Microsoft Doc: https://docs.microsoft.com/en-us/azure/cosmos-db/firewall-support
答案 1 :(得分:0)