Vlad
не надо так
Vlad
pcJson назови хотя бы
Quiet
Ленивая загрузка?! 😄 пр на гит конечно хорошо, но я сейчас учу node. Там нужно не сложно выполнять дз. Должно быть понятно) И нужно самому все написать, что бы понимать)
Sergey
Ну тебе надо в функции проверить пуста ли переменная в модуле
Quiet
pc = pc()
(node:13064) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: pc is not a function
Sergey
Если пуста выполнить запрос и сохранить в переменную
Sergey
Всегда возращать промис
Sergey
Если не пуста
Quiet
без асунка тоже говорит, что пс это не функция
Sergey
return Promise.resolve(cachePc)
Quiet
return Promise.resolve(cachePc)
пили пр, для примера =)
Vlad
пили пр, для примера =)
Пролистай вверх, я уже запилил
Sergey
Sergey
Вот
Почти также, только без функции addToCache
Vlad
А у тебя точно возвращается что то из последнего then?
Sergey
Ага
Sergey
Там же return a = b
Sergey
Если упростить
Quiet
https://github.com/dns2316/skb3
🌚
import pc from './pc'; import _ from 'lodash'; export default async (req, res) => { let pcInf = await pc(); let sizeC = _.sumBy(_.filter(pcInf.hdd, { volume: 'C:' }), 'size'); let sizeD = _.sumBy(_.filter(pcInf.hdd, { volume: 'D:' }), 'size'); return 'C: ' + sizeC + ' ' + 'D: ' + sizeD; }
🌚
app.get('/3a/volumes', async (req, res) => { res.json(await volumes()); });
🌚
не знаю зачем
Славик
?_?
Sergey
биндинг забыли
Vladimir
можно
Vladimir
биндинг
Vladimir
Vlad
Оно уже забиндено
Sergey
бля
Sergey
опять я что-то пропустил
Vlad
Напиши console в репле
Sergey
помню, что как-то осыпался на такой фигне
Vlad
Log bound console.log
Vladimir
ну спека к ноде не имеет отношения
Anonymous
ну от ноды и браузеры понабрались вообще-то
Anonymous
и правильно сделали
Vladimir
эт да
Sergey
раньше нельзя было
Nikolay
В каком-то из IE вроде не работает без байнда.
Anonymous
раньше — это давно
Anonymous
в каком-то ие и не надо в консоль писать
Anonymous
в каком-то еще более древнем ие вообще нет консоли в глобале
Sergey
ладно
Sergey
посыпаюсь
Anonymous
еще браузеры скоро наберутся от ноды global.global
Anonymous
pljhjdj ,eltn
🌚
ну сейчас там только две буквы
Ramil
Все привет, что-то затупил я конкретно, не подскажете как реализовать красиво вот такое: есть контроллер, в котором реализована функция логина User.findOne({login: login}, function(err, user) { if (!user) { return res.status(401).send("The username don't match"); } user.comparePassword(password, function(err, isMatch) { if (err) throw err; if (!isMatch) return res.status(401).send("The password don't match"); });
Ramil
comparePassword описан в модели вот так userSchema.methods.comparePassword = function(candidatePassword, cb) { bcrypt.compare(candidatePassword, this.password, function(err, isMatch) { if (err) return cb(err); cb(null, isMatch); }); };
Ramil
в контроллеере я хочу чтобы все это выглядело вот так: if (!user) return // username don't match if (!user.comparePassword) return // password don't match return // OK
Ramil
если кто-то что-либо понял, был бы рад за помощь, спасибо
Sergey
асинхронщина же
Savo
почему пул функций в функции назяывается именно замыканием?) как это связано)
Ramil
может как то переписать пограмотней возможно?
Ramil
асинхронщина же
Anton
может как то переписать пограмотней возможно?
mongoose.Promise = require(‘bluebird’); а потом везде async/await вместо коллбэков
Anton
посмотри на virtual field для comparePassword
Anton
http://mongoosejs.com/docs/guide.html#virtuals
Ramil
я понимаю что это потому, что функция замыкает на себя переменные внешней функции, подробнее на javascript.ru)
Ramil
почему пул функций в функции назяывается именно замыканием?) как это связано)
Ramil
Спасибо, Антон, гляну
Anton
хотя нет, ты ведь в свойство не сможешь пердать candidatePassword
Anton
разве что ты его где-то в модели сторить будешь, но это бред
Anton
и не “ username don't match”, а “ username/password doesn't match”
Ramil
да, username/password, верно
Ramil
можно конечно не запариться, и ОК отправлять прямо в comparePassword если isMatch == true
Ramil
но это мне кажется bad practice
Anton
ну если это в мидлвере, то да
Anton
а если не матчится, то next(createError(422, ‘Incorrect password’) (https://www.npmjs.com/package/http-errors)
Anton
но если сильно хочешь сделать что-то типо if (!user.comparePassword) return, то можешь попробовать впихивать в модель пароль с которым юзер делает реквест, а user.comparePassword сделать как virtual prop
Anton
но это все костыли какие-то
Anonymous
#whois Валерий работаю удалённо JS/frontend/cordova/ios могу помочь в вопросах про администрирование Linux, регресс тестах *JS буду задавать вопросы по программированию живу в РФ/МО пришёл сюда из ВК группы нетологии С ходу вопрос - чем отличается пункты: ▫️В чём вы специалист? ▫️Чем можете быть интересны или полезны сообществу? Может про специалиста сократить пункт?
Ramil
да, еще подумаю, а так спасибо большое за советы
Anton
та не за что, пиши если что