Можно ли подгузить новые данные из БД на node.js без перезагрузки сервера?

let messages; // получаю список из базы
knex.select().from('messages').timeout(1000).then(res => {
    messages = JSON.stringify(res);
});

router.get('/api', async (ctx, next) => {
    ctx.body = messages; // вывожу
});

Если добавляю новые записи в бд то через обновление страницы они не подгружается, и надо перезагрузить сервер.
На php, с# ничего этого не нужно, вся выгрузка происходит из текущей базы и я в замешательстве. Т.е. мне надо каждый раз ещё и соединение закрывать?
А сделать так чтобы всё на одном порту загружалось вообще не вариант??
или как вообще с этим на node работают? Кто-то же выбирает выбирает это как основной инструмент...
  • Вопрос задан
  • 94 просмотра
Решения вопроса 2
inoise
@inoise
Solution Architect, AWS Certified, Serverless
Нечего просто через задницу код писать. У тебя получение данных происходит один раз, а надо делать получение внутри соответствующего метода, как минимум (про SOLID и т.п. я пока вообще опущу)
Ответ написан
@kr_ilya
Нужно получать данные с БД не 1 раз при запуске сервера, а каждый раз при вызове '/api', т.е как-то так
router.get('/api', async (ctx, next) => {
let messages; // получаю список из базы
knex.select().from('messages').timeout(1000).then(res => {
    messages = JSON.stringify(res);
});
    ctx.body = messages; // вывожу
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы