Вы должны разделять бекенд и фронтенд. Фронт - это то, что видит пользователь (HTML, CSS, клиентский JS), бек - это то, что вы пишите на Node.
То, что вы хотите сделать вам нужно в первую очередь сделать на фронте, а уже затем ловить на бекенде с вашим Node.js.
Чтобы отправить запрос без перезагрузки страницы подойдёт банальный
fetch. Более извращённые варианты с сокетами не предлагаю.
Далее, вы на фронте рисуете изменения, которые хотите: загрузку или отображение того, что лайк поставлен и отправляете запрос себе в бек ноды.
У себя на Node ловите этот запрос, в зависимости от того, какой сервер используется.
Примеров подобного в интернете полно. Например, вот
первое видео из гугла.