Denis
https://www.youtube.com/watch?v=CZ3wIuvmHeM
Denis
Artem
Привет коллегам! Есть express под pm2, нужно кластер сделать, но приложение при рестарте должно однажды записать в redis данные, в то время как другие инстансы должны ждать этих данных. Я понимаю, что это противоречит stateless, но можно как-то в pm2 из коробки это разрулить?
Alex
И по крону дергать?
Да. Очень удобно. У меня обычно подключение к бд в отдельном файле, контроллеры/модели в отдельных - собираю как конструктор. Ещё посмотри например commander если скриптов много
Таймураз
Andrey
Ребят кто то юзал в проекте такую вещь как ботл джс?
Oleg
В некоторых проектах без боттл никак не обойтись (извините)
Ilya
Привет. Как и куда прогрессировать в изучении ноды? Могу написать rest api, например. А что делать дальше не знаю
Artem
Artem
Микросервисы, наверное, это еще модно?)
Cenator 🐈
Cenator 🐈
websocket
Michael 🌌
Michael 🌌
Хотя это не совсем нода
Artem
А чего там в сокетах такого учить нужно?
Vadim
.
Vadim
как вы встраиваете код в сообщения?
Nikita
Зачем нужен Array.isArray, чем опасен instanceof Array и при чём здесь ES-символы, Джейк Арчибальд разбирает тонкость устройства JS — https://jakearchibald.com/2017/arrays-symbols-realms/
Vadim
Artem
dexofan
Vadim
сокеты простые, вот воркеры - интересная тема, не особо обсуждающаяся, но полезная. хотя один хрен на собесах меня валят сортировками)
Anton
ilya
Как вернуть переменную из NodeJS в JS? У меня модуль верификации он отправляет токен на NodeJS потом этот токен меняется на новый токен и этот новый токен надо вернуть обратно на страницу JS.
Den
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
По сабжу: может, проблема в том, что операции — асинхронные, а длину массива ты проверяешь на текущем тике?
Vadim
можно гист?
https://gist.github.com/VadimInshakov/8af7e6a8c48f58adad99a3f71e762c5b
dexofan
Vadim
Nikolay
Vadim
Nikolay
> в updArr есть объекты
неа, нету
Nikolay
Залогируй его на последней строчке.
Nikolay
Не внутри хендлера, а в самом-самом конце твоего кода :)
Таймураз
OK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Vadim
Nikolay
Таймураз
в updArr есть объекты. почему updArr.length равен нулю?
db.collection("news").find({title: cache[i].title})
Вот это означает "сделай запрос в базу с подобными условиями". Оно добавится во внутреннюю очередь ноды. Ответ ты получишь внутри функции-колбека (err, res) => {...}
Таймураз
Данные в массив придут сильно позже окончания цикла
Разве что у тебя запросов в базу не 1000+
Vadim
ага...
Vadim
Michael 🌌
Тебе нужен массив промисов и Promise.all
Vadim
Vadim
Таймураз
Vadim
Vadim
Таймураз
Программирование- это искусство пользования знанием
енот
а не гуглом?
Michael 🌌
Стаковерфлоу
Maxim
Всем привет! Подскажите а как можно обновить полностью локальные пакеты? Например был монгодб 2.Х.Х, а стал 3.0.0
Eldar
Сначала перекрестившись
V
есть либо npm-check-updates
dmk
Есть кто может написать, настроить сервер? Сколько стоимость?
Michael 🌌
Написать и настроить могут тут многие, стоимость зависит от сложности, разумеется
Oleg
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);
};
Yaroslav
Eldar
Стрелочная функция перебивает контекст, и внутри нее this ссылается не на administratorSchema