Обновление выполняется до или параллельно с SELECT.
Это можно исправить, если переместить ОБНОВЛЕНИЕ в обратный вызов, например:
setInterval(async function () {
var uPoints;
await db.each("SELECT points points, id id FROM users", function (err, row) {
if (err) {
console.log(err);
}
var u;
for (u in client.users.array()) {
uPoints = row.points + 10;
}
var user;
for (u in client.users.array()) {
user = client.users.array()[u];
tools.setPoints(uPoints, user.id.toString());
console.log('Updated ' + user.id.toString() + ' to ' + uPoints);
}
});
}, 5000);
});
Я не уверен, какой клиент БД вы используете, но обычно вы не хотите смешивать ожидание с обратными вызовами.
Вы либо хотите иметь:
const rows = await db.each("SELECT points points, id id FROM users");
или
db.each("SELECT points points, id id FROM users", function (err, rows) {..});
Вы должны проверить, поддерживает ли ваш клиент БД async / await, или вы можете использовать promisify.