Я не знаю, какую библиотеку синтаксического анализа csv вы используете, зная, что это поможет, но эти обработчики событий отделены от фактического синтаксического анализа csv. Таким образом, событие data отправляется, и вызывается ваша функция on data, но это требует времени (это асинхронная c функция, записывающая в базу данных). Проблема для вас заключается в том, что запуск функции on on data не блокирует синтаксический анализатор csv, который продолжает работу и выдает свое событие «end», пока функция on on data все еще работает. Таким образом, вы регистрируете конец, когда разбор csv завершен, а не когда ваш обработчик событий завершен.
Самый простой способ справиться с этим - прочитать все строки в очередь, обработать их, затем завершить запись .
var csv = require("fast-csv");
function findTeacher(req, res) {
var lines = [];
csv.parseFile(req.body.file)
.on("data", function(data) {
lines.push(data);
})
.on("end", function() {
lines.forEach(function(data) {
var teacher = await Teachers.find({name: data});
console.log(teacher);
});
console.log("end");
});
}