AlexMist
Он же в памяти будет висеть
AlexMist
app.set('zapros', obj)
AlexMist
Только зачем так нужно?
Камиль
есть функция которая вызывается раз в 10 минут
Камиль
и она вызывает функции которая будет каждую минуту отрабатывать
Камиль
и которой нужны Юзеры с базы
Камиль
чтобы каждую минуту не запрашивать
Камиль
думаю сделать вот так
Камиль
запросу в основной функции, она свой вызов закеширует в обькт
Камиль
а потом я этот обьект вызову в другой функции
AlexMist
Ну самое простое реализввать проверку времени , и если истекло делать запрос к БД, если нет возвращать объект
AlexMist
в модуле
Камиль
а что за app.set()?
AlexMist
expresss
Камиль
жаль что у меня его нет)
AlexMist
Чистая нода ?
Камиль
у меня голая нода и секуалайз
AlexMist
Ну это ничего не менят. У тебя есть модуль. При обращении к объекту, через get функцию, проверять когда он был создан. Добавить служебное поле expiries.
Камиль
нет вроде все проще
Камиль
мне же просто нужно по сути ссылку на то что возвращает функция сделать
AlexMist
Камиль
нодой
AlexMist
таймаутом что ли ?
Камиль
ага
Камиль
вот так может
Камиль
const getTransactionFromDb = () => Transaction.findAll().then((transaction) => {
transactionsObjectFromDb = transaction;
return transactionObjectFromDb;
});
Камиль
let transactionObjectFromDb;
AlexMist
let data = {};
module.export.getData = function(){ return data}
module.export.runDB = function() {
запрос к бд
data = result
return true
}
AlexMist
let data будет в памяти висеть
AlexMist
runDB запускаешь раз в 10м
Eldar
const data = null;
const getTransactionFromDb = function() {
if (data !== null) {
return Promise.resolve(data);
}
return Transaction.findAll().then((transaction) => {
data = transaction;
return data;
});
}
Eldar
Если тебе не нужно проверять кеш на актуальность и тд
Камиль
ну он же будет при каждом запуске функции актульаным
Камиль
?
AlexMist
НЕТ в том и прикол ноды. Она в памяти висит
Это на PHP
Eldar
С чего вдруг? oO Он один раз закешировал и все
Камиль
то есть каждые 10 мин впринципе у меня будет запрос
Eldar
Если нода висит просто процессом и ты долбишь раз в 10 минут, то кеш будет один и тот же
Eldar
Если ты не следишь за актуальностью кеша
Eldar
Тоесть если были новые транзакции то увы
AlexMist
Он кеш обновляет другой функцией
Eldar
А, сорри, не увидел
Камиль
если я вызываю getTransactionFromDb в другой функции
Eldar
Мой пример тогда некорректен
Камиль
то он будет запрос делать
AlexMist
Ну по сути ты всё правильно написал.
Просто сделать переменную и её обновлять.
Она висит в памяти и никуда не денется.
Пока не перезапустишь ноду или она сама упадёт )
Камиль
а что там попправить?
AlexMist
let transactionObjectFromDb = {};
const getTransactionFromDb = () => Transaction.findAll().then((transaction) => {
transactionsObjectFromDb = transaction;
return transactionObjectFromDb;
});
const getCasheTransaction = () => {
return transactionObjectFromDb;
}
Камиль
а почему нельзя просто вместо паследней функции экспортить переменную transactionObjectFromDb
Камиль
в ней будет же кеш?
AlexMist
Да попробуй , я так привык )
Камиль
спасибо большое
AlexMist
Просто потом логику обработки кеша захочешь добавить и придётся по всему коду изменять вызов этого кеша.
А тут в моделе дававил то что надо,и везде поменялось
AlexMist
Eugene
Товарищи, есть node, express и puppeteer.
Кликаю на кнопку - открывается url и делается screenshot.
Но на продакшн сервере падает при окончание тайм-аута.
Ошибок нет.
В чем может быть трабла?
Eugene
504 Gateway Timeout
arts
Либо скриншот слишком долго обрабатывается, либо ошибки есть, но ты их catch'ем глушишь
Eugene
rollbar тоже молчит, папка для скринов создана : (
Michael
Всем привет.
Есть скрипт, который юзает fs и определенный path(пусть будет ‘scripts/data’)
И кладет туда данные.
Но есть проблема, что этот скрипт может быть вызван из разных папок. И в таком случае иногда дата кладется не в ту директорию.
Если вызвать из папки скрипт то положет scripts/scripts/data
Если в руте проекта, то
Scripts/data
Можно ли как-то это поправить?
DemDev
Не знал где спросить, не ругайтесь, если совсем не по теме
Пишу pipeline script для jenkins'a и хочу застэшить данные с одного хоста на другой
Сначала я делаю git checkout репозитория
Создаю в нем файл и хочу stash'нуть его на одном хосте и unstash'нуть на другом
git branch: 'master', changelog: false, credentialsId: '123', url: 'git@github.com:company/reponame.git'
createUsersToJson("data.json")
stash name: "sources", includes: "reponame"
unstash "sources"
Но мне кидает ошибку:
ERROR: No files included in stash
Что делаю не так, как поправить?
Nikolay
Max
привет! подскажите, пожалуйста, неофиту: а в ноде вообще принято использвоавать IoC (inversion of control) ?
Тимофей 🛴
Max
Max
вообще зачем мне это нужно - есть легаси проект, в котором ядро это монолит-файл на 3,5К+ строк кода (legacy JS). Вот начал разбивать всё по файлах-модулях и упёрся в проблему что там куча всего лежит и мутируется в области видимости модуля... вот ищу решения как это можно красиво обграть - зарефакторить, как минимум - разбив на файлы, при этом не передавая 1 афиггилеон параметров в ф-ции
Тимофей 🛴
Max
неее вообще не вариант, - я бы то переписал, но мне времени столько не дадут)
Камиль
Погугли, вроде вообще let var экпортировать плохим тоном считается
я в класс вынес логику получилось так
const Transaction = require('../models/transaction');
class Transactions {
constructor() {
this.cache = null;
}
get(fromCache = false) {
if (fromCache && this.cache) {
return Promise.resolve(this.cache);
}
return Transaction.findAll()
.then((transactions) => {
this.cache = transactions;
return transactions;
});
}
}
module.exports = new Transactions();
AlexMist
Камиль
ага
Камиль
)
AlexMist
👍🏻 и выглядит вроде хорошо
Yarik
Всем привет, поскажите как лучше делать деплой проекта, у меня в проекте есть папка dist с фронтом который нужно при git pull удалять полностью и заливать по новой, если это не сделать фронт начинает работать не адекватно. Есть ли на это какая-то команда git или другое решение ?
Cenator 🐈
Cenator 🐈
gitlab ci можешь заюзать
Vadim
+