Проблема в том, что db.each является функцией обратного вызова.Эта функция выполняется, и для получения ответа требуется некоторое время, однако система не останавливается и цикл for продолжается.Когда это заканчивается, вызывается res.send, пока ответы от db.each все еще обрабатываются.
Вы можете попробовать
db.all(
SELECT visit_id FROM patient_visits where patient_id IN ?
AND visitdate >='"+moment().format('YYYY-MM-DD')+"'", response.patients,
function(err, rows) {
if (err) {
throw err;
}
rows.forEach((row) => {
response.patients[row.visit_id].check = "true";
});
res.send(response);
});
Я не уверен насчет содержимого переменной строки, чтобы получить значение visit_id, но перед печатью переменной и проверьте, работает ли она.
Если у вас есть какие-либо сомнения, дайте мне знать.И я настоятельно советую вам прочитать некоторый контент о обратных вызовах и о том, как они работают, а затем обещания и async / await, потому что обратные вызовы сейчас не используются, с async await ваша проблема будет легко решена.