2017-11-17 2 views
0

Seed NodeJS express Heroku App

mongoose.connect('mongodb://localhost:27017/smartphones'); 
 
mongoose.connection.on('error', console.error.bind(console, 'MongoDB connection error:')); 
 

 
var smartphones = [ 
 
    new Smartphone({ 
 
     title: "V3", 
 
     usp: "20MP Softlight Camera", 
 
     image_path: "/image/phone_v3max.png", 
 
     qty: 1, 
 
     price: 200 
 
    }), 
 
    new Smartphone({ 
 
     title: "V5", 
 
     usp: "Feel the Real Speed", 
 
     image_path: "/image/phone_v5.png", 
 
     qty: 1, 
 
     price: 450 
 
    }) 
 
]; 
 

 
var done = 0; 
 
for(var i = 0; i < smartphones.length; i++) { 
 
    smartphones[i].save(function(err, result) { 
 
     done++; 
 
     if(done === smartphones.length) { 
 
      exit(); 
 
     } 
 
    }); 
 
} 
 

 
function exit() { 
 
    mongoose.disconnect(); 
 
}

Wenn ich arbeite lokal auf NodeJS App konnte ich laufen und die Datendatei (smartphoneIndex-seeder.js) Samen, die das Projekt, indem Sie in der Befehlszeile enthalten ist. Aber wie soll das gemacht werden, wenn die App nach Heroku geschoben wurde, wie kann ich die Daten von dort aus säen? Die App läuft, aber Seiten, die von den Seed-Daten ausgeführt werden, werden leider nicht auf meiner Seite angezeigt. Jedem eine Idee, wie ich das Seed Date verbinden könnte, damit meine gesamte App richtig läuft.

+0

müssen Sie etwas verwenden, wie [mLab] (https://mlab.com/) Sie mongoDB auf dem Server und den Zugriff auf Host es über das Internet – JavaEvgen

+0

@JavaEvgen Do I Kommandozeile ausführen oder nur die MongoURI ändern? –

Antwort

0

Es klingt für mich wie Sie wollen eine Art Pre-Boot-Prozess. Sie möchten wahrscheinlich Code schreiben, der ausgeführt wird, bevor Sie Ihrer Anwendung mitteilen, dass sie mit dem Empfang eines Ports beginnen soll. Dieser Code wird auf die Datenbank schauen, um zu sehen, ob irgendwelche Daten existieren, und wenn dies nicht der Fall ist, ruft sie irgendeinen Code auf (wie zB Ihre smartphoneIndex-seeder Funktion, die Daten in die Anwendung pusht.

Sobald diese Entscheidung ist , können Sie sich Ihre normalen app.listen() Express Code dann rufen.

+0

Aber lokal konnte ich das ohne jeden Fehler ausführen ..... indem ich die Befehlszeile "node seederfile.js" ausführte, aber wenn es auf Heroku geschoben wurde, habe ich keine irgendeine Idee, wie man diese Datei von dort aus sät. –

+0

Wie bereits erwähnt, das gesamte Seed-Skript in eine Funktion einbinden, die Sie dann beim Start Ihres Servers aufrufen können. Wenn Sie einen Befehl ausführen möchten, können Sie den Befehl heroku run verwenden. Dies kann jedoch dazu führen, dass die Bereitstellung fehlschlägt, wenn die Daten nicht bereits vorhanden sind. –