2017-10-02 3 views
0

ich CosmosDB zu verbinden versuchen, verwende ich Verbindungszeichenfolge von Quick Start, es auf meinem localhost funktioniert prima, aber sobald ich mich einsetzeVerbindung zu Azure CosmosDB

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

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

var db = mongoose.connect(mongoUri,options) 

Ich habe Verbindungszeichenfolge überprüft . Ich kann auf meinem localhost verbinden, ich kann auch eine Verbindung zu db mit Robo 3T herstellen.

+0

Wenn Sie Cosmos DB einrichten, haben Sie die MongoDB API oder die DocumentDB API wählen? Muss MongoDB API sein. Außerdem wäre es hilfreich, wenn Sie Ihre Frage bearbeitet und Ihre Verbindungszeichenfolge freigegeben haben (BITTE VERBESSERN/ÄNDERN Sie den echten Datenbanknamen oder Zugriffsschlüssel). In Ihrem Beispiel haben Sie nur "dbaccount" und "dbhost" - nicht genug, um festzustellen, ob ein Problem mit dem Verbindungszeichenfolgeformat vorliegt. –

Antwort

2

TL; DR: Fügen Sie die IP von Ihrer Webanwendung auf Azure zur IP Access Control List auf Ihrer Firewall in Ihrer Datenbank hinzu.

enter image description here

Ich hatte genau das gleiche Problem, ich lokal und mit Robo 3T verbinden konnte, aber sobald ich die App auf Azure bereitgestellt erhielt ich diesen Fehler:

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) 

So sind die Chancen hoch, dass etwas mit den Firewalleinstellungen auf Azure falsch ist.

Für mich habe ich meine IP Access Control auf der db auf Azure deaktiviert und der Fehler verschwand und alles funktionierte wie erwartet. Ich habe IP Access Control wieder aktiviert und die IP aus der Web App hinzugefügt, um den Zugriff zu ermöglichen. Das sollte den Trick machen. Ich denke, Sie können von Ihrem lokalen Host zugreifen, weil Ihre lokale IP bereits als Standard für Entwicklungszwecke hinzugefügt wurde.

Sehen Sie diese Microsoft Doc für weitere Informationen: https://docs.microsoft.com/en-us/azure/cosmos-db/firewall-support

+1

Dies löste mein Problem, außer dass ich "MongoError: Authentifizierung fehlgeschlagen" erhielt, falls jemand mit diesem Problem über diese Antwort stolpert. –

Verwandte Themen