Это не самый лучший мой ответ, но вы можете заменить два запроса на запрос, содержащий JOIN:
select m.value
from mark m join user u on (m.user_id = u.id)
where user_token = $1
order by m.date desc
limit 1
Это должно устранить проблему и позволить вам продолжить работу. Как сказал Линус:
Нет проблем слишком больших, от которых нельзя убежать.
Я все еще думаю, что есть какая-то проблема с синхронизацией, когда запускается внутреннее событие "row ready" и вызывается внешнее событие "request is complete". Я ожидал бы, что внешнее событие «end» будет запущено до внутреннего события «row is ready» (но, по общему признанию, я не знаком с интерфейсом базы данных node.js). Вы также можете вставить логику «сделка с last_mark
» в обратный вызов «строка готова»:
get_mark.on('row', function(mark) {
// Call yet another callback to send `mark.value`
// into the outside world.
});
Это приведет к дополнительным шагам в цепочке обратных вызовов, но такого рода вещи подходят для курса при работе с асинхронными API.