Ich importiere Daten aus einer CSV-Datei in ein Nodejs-System mit Sequelize, aber ich habe Probleme, zu überprüfen, ob eine vorherige Zeile zuvor eingefügt wurde.Sequelize commit nach jedem Einfügen
Dies ist der Code, den ich
exports.insertEmployee = function (employee) {
return new Promise((fulfill, reject) => {
models.Employee.create(employee)
.then(employee => fulfill(employee.dataValues))
.catch(reject);
});
};
exports.importEmployee = function (employee) {
return new Promise((fulfill, reject) => {
models.Employee.findOne({where: {customID: employee.customID}, raw: true}).then(emp => {
if(emp) {
fulfill(emp);
}
else {
exports.insertEmployee(employee).then(fulfill);
}
});
});
};
Die Funktion importEmployee verwendet, wird so oft wie Linien gibt es in der csv wie diese
lines.forEach(line => {
let emp = line.employee;
importEmployee(emp).then(employee => {console.dir(employee)});
});
Das Problem, das ich habe angerufen werden Wenn ich überprüfe, ob ein Benutzer mit der gleichen customID bereits eingefügt wurde, hat die Datenbank den Einsatz noch nicht festgeschrieben, so dass immer false zurückgegeben wird und ich doppelte Mitarbeiter mit der gleichen benutzerdefinierten ID
habeWie könnte ich das beheben? Ich habe versucht, Transaktionen zu verwenden, aber vielleicht mache ich es falsch, weil es nicht hilft.
Danke!