Я хочу, чтобы данные в константе или объекте обновлялись, т.е. я меняю конфиги в JSON базе, скрипт схватывает и обновляет данные в константе или объекте. Пробовал const
на let
заменять, но это глупо и бесполезно. Я хочу обновлять данные константа или объекта из JSON базы не перезапуская скрипт. Скажу сразу с JSON базы на SQL и другие переходить желания нет.
let configs = null
let addition = null
let realties = null
let estates = null
setInterval(() => {
configs = require("./configs.json")
addition = require("./addition.json")
realties = addition.realties
estates = addition.estates
}, 6000)
Вам нужно следить за файлом с помощью fs.watchFile
Если что-то копирует конфиг к себе нужно оповистить тот код об изменениях
Можно сделать оповещение через eventEmmiter класс
Можно оставить const
. Но тогда обновлять придется так:
const configs = {} // не null, а {}
console.log(configs);
Object.assign(configs, {
my: 'config',
addition: '123'
});
console.log(configs);
Object.assign(configs, {
my: 'config',
config: 'my',
addition: '123'
});
console.log(configs);
Обновления ФС, как уже написали, делаете с fs.watchFile
, а чтение можно сделать и через fs.readFile
, но не забыв распарсить JSON.parse
:
const configs = require('./configs'); // первый раз можно и с require
// а все последующие разы require будет возвращать одно и тоже
// независимо от того, менялся конфиг или нет
fs.watchFile("./configs.json", ()=>{
fs.readFile("./configs.json", "utf8", (file)=>{
Object.assign(configs, JSON.parse(file));
}
})
Способ от пользователя DiD и Ghost мало чем помог, ибо у меня не работало. Я написал своё, вот пример:
const base = require("./base.json"); // ваш путь к JSON-файлу или базе
setInteval(()=>{
const prebase = fs.readFileSync("./base.json"); // читаем файл JSON, здесь нам выдаст шифованный или двоичный код
Object.assign(base, JSON.parse(prebase)) //JSON.parse переведет прочитанные данные в нормальный JSON, т.е. не двоичный, и перезапишет данные в объекте base на новые
console.log('okay! синхронизация базы завершена!') // сообщение все успешно прошло
},15000) // обновляет данные каждые 15000 миллисекунд, т.е. 15 секунд```
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Скажите, пожалуйста, сделал landing page для бизнеса на Nuxt, теперь не знаю как это все положить на хостингМогу положить на Netlify, но мне нужно с красивым...
Я пытаюсь создать кнопку которая будет перемешивать плейлист(массив объектов), а по второму клику возвращать не перемешанный плейлистПочему-то...
Встретился с такой проблемой - не могу верно указать путь до второй страницы,самый простой шаг(выйти из той папки, где лежит основная страница...