2017-10-30 1 views
0

Derzeit habe ich diese Config Abschnitt mit Heroku des MLab oder lokal ausgeführt werden, wenn esAttach MongoLab zum Server

in Entwicklung ist
var env = process.env.NODE_ENV || 'development'; 

if (env === 'development') { 
    process.env.PORT = 3000; 
    process.env.MONGODB_URI = 'mongodb://localhost:27017/manage'; 
} else if (env === 'test') { 
    process.env.PORT = 3000; 
    process.env.MONGODB_URI = 'mongodb://localhost:27017/manage-test'; 
} 

, die für die Authentifizierung Abschnitt meines Codes arbeitet. Allerdings muss ich in dieser Datenbank eine weitere Sammlung zuzugreifen, und zur Zeit, ich bin es lokal mit

app.get('/auth-home', isLoggedIn, (req, res) => { 
    MongoClient.connect("mongodb://localhost:27017/manage", (err, db) => { 
     db.collection("home", (err, collection) => { 
      collection.find().toArray((err, result) => { 
       if (err) { 
        return err; 
       } 
      }); 
     }); 
    }); 
}); 

jedoch verbindet, wird dies nicht mit MLab verbinden, da es localhost ist. Also ist mein Problem im Moment, dass ich nicht sicher bin, wie ich diesen Konfigurationsabschnitt Code in meine Routen übergebe, sowie eine Verbindung zu einer anderen Sammlung herstelle, und sie dann auch mit Heroku arbeiten zu lassen.

+0

Kasse diese [Seite] (https://stackoverflow.com/q/19474712/7987108) – ufxmeng

+0

@ufxmeng ich die Seite zuvor gesehen haben, es hat aushelfen nicht so viel wie ich hätte mir gefallen, aber danke –

Antwort

0

Es gibt einige Probleme mit der Konfiguration Ihrer App.

Ein Schlüsselproblem besteht darin, dass Ihre Anwendung einen Verbindungspool nicht ordnungsgemäß verwendet, da bei jedem Aufruf des Endpunkts eine neue Verbindung erstellt wird. Sie sollten diese blog post überprüfen, um ein besseres Gefühl dafür zu bekommen, wie Sie die Verbindungslogik in Ihrer App konfigurieren.

In Bezug auf Ihre Hauptfrage, scheint die Art, wie Sie process.env verwenden, ein wenig rückwärts. In der Regel wird process.env zum Lesen von Informationen verwendet, die in einer Umgebungsvariablen gespeichert sind. Für ein mLab-Add-On können Sie die Variable MONGODB_URI lesen, um die connection string for your database zu erhalten.

Sie könnten dann eine Kombination von Variablen verwenden, um der Anwendung zu sagen, dass sie die Localhost-Verbindungszeichenfolge bei lokaler Ausführung verwendet, während die mLab-URI in Heroku ausgeführt wird. Etwas wie:

// assuming 'development' is local, 'test' is heroku 
var app_env = process.env.NODE_ENV || 'development'; 

if (app_env === 'development') { 
    var app_port = 3000; 
    var uri = 'mongodb://localhost:27017/manage'; 
} else if (app_env === 'test') { 
    var app_port = 3000; 
    var uri = process.env.MONGODB_URI 
}