Mam poniższy skrypt węzła, aby zasadniczo skopiować zawartość niektórych plików i wstawić je do mongo.Skrypt węzła nigdy się nie kończy
Scenariusz nigdy się nie kończy i pomimo tego, że wszystkie dane zostały pomyślnie wstawione, zawsze muszę wykonać Ctrl + C, aby go zabić.
Czy jest coś, co powinienem użyć w pliku node.js, aby zakończyć skrypt?
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/testdb');
var dir = './seeds';
var db = mongoose.connection;
// Show connection error if there is one
db.on('error', console.error.bind(console, 'Database Connection Error:'));
// If we successfully connected to mongo
db.once('open', function callback() {
var fs = require('fs'); // Used to get all the files in a directory
// Read all the files in the folder
fs.readdir(dir, function(err, list) {
// Log the error if something went wrong
if(err) {
console.log('Error: '+err);
}
// For every file in the list
list.forEach(function(file) {
// Set the filename without the extension to the variable collection_name
var collection_name = file.split(".")[0];
var parsedJSON = require(dir + '/' + file);
for(var i = 0; i < parsedJSON.length; i++) {
// Counts the number of records in the collection
db.collection('cohort').count(function(err, count) {
if(err) {
console.log(err);
}
});
db.collection(collection_name).insert(parsedJSON[i], function(err, records) {
if(err) {
console.log(err);
}
console.log(records[0]);
console.log("Record added as "+records[0]);
});
}
});
});
});
Może być konieczne zamknięcie połączenia 'db'. Jeśli chodzi o 'node.js', to pozostaje ono możliwym źródłem zdarzeń, o ile jest otwarte. –
Odpowiedź jest poprawna, a komentarze są poprawne. Zasadniczo musisz zrozumieć, że działasz w "pętli zdarzeń", a konsekwencją tego jest to, że po otwarciu programów obsługi zdarzeń "tak, jak masz" (nawet jeśli nie wiesz, że to zrobiłeś), pętla będzie czekać na zdarzenia. Zamknij moduły obsługi lub jawnie "zakończ pętlę" –