Ich glaube, Ihr Problem ist ein Konfigurationsproblem und kein Problem mit dem Bücherregal. Ich denke, Ihre beste Vorgehensweise besteht darin, zunächst Umgebungsvariablen im Knoten zu verwenden, um Ihre Datenbankverbindungszeichenfolge zu speichern. Die Idee ist eine spezifische Konfiguration für verschiedene Umgebungen (Dev, Test, Stage, Prod usw.), getrennt von der eigentlichen Codebasis. Es gibt viele Möglichkeiten, Umgebungsvariablen im Knoten zu verwenden, daher werde ich nicht auf alle eingehen. Ein paar gute sind dotenv und node-foreman. Wir verwenden Knoten-Vorarbeiter, da wir hauptsächlich auf Heroku laufen. Ich habe eine .env-Datei, die Konfigurationsoptionen enthält, die NICHT in git eingecheckt sind. node-Vorarbeiter unterstützt json .env Dateien, so meins etwas würde wie folgt aussehen:
{
"DATABASE_URL": "postgres://user:[email protected]:port/schema",
"LOG_LEVEL": "DEBUG"
}
Es könnte mehr als das ist, aber Sie bekommen die Idee. Ich würde mehrere .env-Dateien für verschiedene Umgebungen haben (d. H. Env.dev, .env.test, .env.stage usw.). Wieder da ich node-Vorarbeiter verwenden, ich starten diese mit nf start
die die .env Datei verwendet standardmäßig, aber Sie die Option -e wie so verwenden können: nf -e .env.test start
Sie dann Zugriff auf diese Konfiguration mit process.env
in Ihrer Anwendung. Sie könnten dann haben db.js:
Sie benötigen dann diese Datei, wo Sie es in Ihrer Modelldatei benötigen. So könnte dies in usermodel.js gehen:
const bookshelf = require('./db').bookshelf;
const User = bookshelf
.Model
.extend({
tableName: 'user'
});
module.exports = {
User,
}
Dann in Ihrem app.js (oder wo auch immer Sie benötigen Benutzer abfragen):
const User = require('./usermodel').User;
User.fetchAll();
Also, wenn Sie dies einrichten, Sie Starten Sie einfach Ihre App mit einer anderen Konfiguration mit nf -e .env.whatever
Abhängigkeit von einem Service macht diese Tests "Service Integration Tests", keine Unit-Tests. Dies löst ein anderes Problem. – Gajus
Sie müssen nicht dotenv oder foreman verwenden, um Umgebungsvariablen einzurichten. Es macht es einfach einfacher. Willst du es ohne die Abhängigkeit tun? Führen Sie Folgendes aus: DATABASE_URL = "postgres: // Benutzer: pass @ Host: Port/Schema" Npm Start – ricka