Denis
https://www.youtube.com/watch?v=CZ3wIuvmHeM
Denis
Artem
Привет коллегам! Есть express под pm2, нужно кластер сделать, но приложение при рестарте должно однажды записать в redis данные, в то время как другие инстансы должны ждать этих данных. Я понимаю, что это противоречит stateless, но можно как-то в pm2 из коробки это разрулить?
Alex
И по крону дергать?
Да. Очень удобно. У меня обычно подключение к бд в отдельном файле, контроллеры/модели в отдельных - собираю как конструктор. Ещё посмотри например commander если скриптов много
Таймураз
p.s. Спасибо большое за советы
Делай все с помощью промисов, async/await Ответ прост
Andrey
Ребят кто то юзал в проекте такую вещь как ботл джс?
Oleg
В некоторых проектах без боттл никак не обойтись (извините)
Ilya
Привет. Как и куда прогрессировать в изучении ноды? Могу написать rest api, например. А что делать дальше не знаю
Artem
Микросервисы, наверное, это еще модно?)
Cenator 🐈
websocket
Michael 🌌
Хотя это не совсем нода
Artem
А чего там в сокетах такого учить нужно?
Vadim
.
Vadim
как вы встраиваете код в сообщения?
Nikita
Зачем нужен Array.isArray, чем опасен instanceof Array и при чём здесь ES-символы, Джейк Арчибальд разбирает тонкость устройства JS — https://jakearchibald.com/2017/arrays-symbols-realms/
Ilya
как вы встраиваете код в сообщения?
3 вот одинарныз скобки с каждой стороны ' '''''''
Michael 🌌
А чего там в сокетах такого учить нужно?
Да хотя бы разобраться как они работают и как их поднять - уже +1 полезный навык
Vadim
сокеты простые, вот воркеры - интересная тема, не особо обсуждающаяся, но полезная. хотя один хрен на собесах меня валят сортировками)
Anton
ilya
Как вернуть переменную из NodeJS в JS? У меня модуль верификации он отправляет токен на NodeJS потом этот токен меняется на новый токен и этот новый токен надо вернуть обратно на страницу JS.
Vadim
друзья, прошу вас подсказать, в чем ошибка. код тривиальный, но ведет себя странно. let updArr = []; for (let i=0; i<cache.length; i++){ db.collection("news").find({title: cache[i].title}).toArray((err, res)=>{ if (res.length > 0) { updArr.push(cache[i]); } console.log(updArr); }) } console.log(updArr.length); if (updArr.length == 1){ console.log("OK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); db.collection("news").insertOne(updArr[0], function(err, res) { if (err) throw err; console.log("Number of documents inserted: " + res.insertedCount); }); } else if (updArr.length > 1){ console.log("OK2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); db.collection("news").insertMany(updArr, function(err, res) { if (err) throw err; console.log("Number of documents inserted: " + res.insertedCount); }); } updArr - непустой массив объектов, это видно в стандартном выводе updArr.length тем не менее всегда равно нулю соответственно, флагов "ок1" и "ок2" я в стандартном выводе не вижу. с чем это могло бы быть связано?
Den
можно гист?
Nikolay
Дядь, тебе вот самому такое приятно читать?
Nikolay
Den
Надо в описание паблика сделать правило не кидать простыню, а что то типа гист или подобное
Nikolay
По сабжу: может, проблема в том, что операции — асинхронные, а длину массива ты проверяешь на текущем тике?
Anonymous
Надо в описание паблика сделать правило не кидать простыню, а что то типа гист или подобное
Не поможет, их никто не читает. Это должен быть бот, который в личку поприветствует и расскажет что к чему
Vadim
можно гист?
https://gist.github.com/VadimInshakov/8af7e6a8c48f58adad99a3f71e762c5b
Nikolay
https://gist.github.com/VadimInshakov/8af7e6a8c48f58adad99a3f71e762c5b
Так, и в чем твой вопрос? Что вообще происходит в этом коде, и чего ты хочешь добиться?
Vadim
По сабжу: может, проблема в том, что операции — асинхронные, а длину массива ты проверяешь на текущем тике?
не совсем понимаю, простите. там всё последовательно должно выполниться
Nikolay
> в updArr есть объекты неа, нету
Nikolay
Залогируй его на последней строчке.
Nikolay
Не внутри хендлера, а в самом-самом конце твоего кода :)
Таймураз
OK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Таймураз
в updArr есть объекты. почему updArr.length равен нулю?
db.collection("news").find({title: cache[i].title}) Вот это означает "сделай запрос в базу с подобными условиями". Оно добавится во внутреннюю очередь ноды. Ответ ты получишь внутри функции-колбека (err, res) => {...}
Таймураз
Данные в массив придут сильно позже окончания цикла Разве что у тебя запросов в базу не 1000+
Vadim
ага...
Michael 🌌
Тебе нужен массив промисов и Promise.all
Vadim
Данные в массив придут сильно позже окончания цикла Разве что у тебя запросов в базу не 1000+
спасибо за пояснение, я думал, это всё последовательно выполнится
Таймураз
спасибо за пояснение, я думал, это всё последовательно выполнится
Все же не мешало бы язык подучить, прежде чем писать что-то
Vadim
Таймураз
а как же практика?) или в чат не писать?
Спрашивать можно Теория тоже важна, настолько же, насколько и практика
Vadim
Спрашивать можно Теория тоже важна, настолько же, насколько и практика
по мере возникновения проблем и узнаю о пробелах в понимании
Таймураз
Программирование- это искусство пользования знанием
енот
а не гуглом?
Michael 🌌
Стаковерфлоу
Таймураз
а не гуглом?
Это и имел ввиду
arts
а не гуглом?
Не сказано ведь, чьим знанием.
Maxim
Всем привет! Подскажите а как можно обновить полностью локальные пакеты? Например был монгодб 2.Х.Х, а стал 3.0.0
Eldar
Сначала перекрестившись
V
есть либо npm-check-updates
dmk
Есть кто может написать, настроить сервер? Сколько стоимость?
Michael 🌌
Написать и настроить могут тут многие, стоимость зависит от сложности, разумеется
Maxim
Народ, а подскажите пожалуйста в чем может быть причина? Строка добавления метода administratorSchema.methods.comparePassword = (password, callback) => bcrypt.compare(password, this.password, callback); Строка вызова метода admin.comparePassword(password, (error, res) => { … }); в самом методе this = undefined и bcrypt.compare ругается, что нет пароля
Maxim
в чем может быть?
Maxim
нашел проблем
Maxim
проблему*
Maxim
если расписать administratorSchema.methods.comparePassword = (password, callback) => bcrypt.compare(password, this.password, callback); как стандартную функцию, то все нормально работает. Почему такое может быть?
Eldar
Что значит как стандартную функцию? oO
Eldar
Ты две одинаковых строчки написал вроде
Eldar
Очевидно что () => {} перебивает контекст this у тебя
Maxim
administratorSchema.methods.comparePassword = (password, callback) => bcrypt.compare(password, this.password, callback); переписать как administratorSchema.methods.comparePassword = function(password, callback) { bcrypt.compare(password, this.password, callback); };
Eldar
Стрелочная функция перебивает контекст, и внутри нее this ссылается не на administratorSchema