Ruslan
Написал модуль для динамической проверки типов переменных, пример: typeOf([ {selector, is: [String, Object]}, {regExp, is: RegExp}, {returnAll, is: Boolean, optional: true} ]); Есть у кого какой опыт по этой проблеме? Поделитесь мыслями https://www.npmjs.com/package/type-of-data
Viktor
https://github.com/epoberezkin/ajv (например)
Sheldhur
полнотектсовый поиск в монге кто нибудь юзал?
Ruslan
А JSON Schema чем не подошла?
Ну, типа, это череcчур... Хотелось сделать что-то простое, декларативное и наглядное. Проверить типы переданных аргументов или деструктурированных переменных, а не свойств объекта.
Ruslan
Полезная штука эта ваша JSON Schema, но это как из пушки по воробьям стрелять - для особых случаев
V
joi? :)
Evgenii
Добрый день, подскажите как можно решить данную задачу, при загрузке фото на сайт могут загружаться перевернутые фото, можно ли потом при просмотре в галереи эти фото развернуть? как определить автоматически что фото не правильное ? и скрипт переворачивал? фото хранятся на amazon,как лучше это делать при загрузке или уже при выводе в галереи?
Ruslan
joi? :)
Это всё валидация, а не простая проверка типа
V
А провеврка типа - не валидация?
Ruslan
Валидация - проверка валидности значения (min, max, empty и т.д). Проверка типа - просто что-то вроде typeof (само значение не важно, только его тип)
Evgeny
можно попробовать из экзифа вытащить
Viktor
Полезная штука эта ваша JSON Schema, но это как из пушки по воробьям стрелять - для особых случаев
JSON Schema не только моя. Это стандартный инструмент для решения подобных задач. Я бы на Вашем месте взял его и не изобретал велосипед. Оверхед JSON схемы по сравнению с вашим решением вряд ли будет ощутимым. Плюс, если Вам уже сейчас надо проверять типы, то завтра наверняка потребуется что-то ещё, что в JSON Shema, скорее всего, тоже есть.
Evgeny
@klond90 слушай, а ты же фанат тарантула, можно тебя чуток помучать?
KlonD90
Можно ток я в дороге
Evgeny
Ну значит ответишь когда сможешь. У них есть движок софия, для множественной записи и редкого чтения. У меня есть маза что эта штука отлично ложится на мой юзекейс. А можно понять про что идёт речь под "записью" - какого порядка обьёмы живут нормально?
KlonD90
Они его выкинули
KlonD90
И написали новый винил
KlonD90
В 1.7 уже он И стабильный
Evgeny
ага, то есть страница на их опенсорс мейлру неактуально более. А что там тогда с персистентностью? Нужно чтобы весь пул данных помещался в память? По поводу винила - он только на запись или умеет обновлять существущие данные нормально?
KlonD90
Ну терабайт говорят ок. Но там в любом случае индексы должны в мемори помещатся
KlonD90
https://github.com/tarantool/tarantool/wiki/Vinyl-Architecture
Evgeny
Ну апдейт умеет. Насчет апсерта когда-то не умел. Скорее всего уже умеет
оно быстро работает, ты не сталкивался? у меня в принципе немного, около десятков гб в час на апсерт\апдейт
KlonD90
оно быстро работает, ты не сталкивался? у меня в принципе немного, около десятков гб в час на апсерт\апдейт
Запись? Ну там оптимизированно под ссд так что если ссд то я думаю 10гб он в минуту прогонит
Evgeny
А с шардингами\репликой ты работал? есть там неочевидные подводные камни?
KlonD90
Реплику мне поднимал чувак с мыла. Ну основная проблема отсутствие синхронного мастер мастера
KlonD90
Там асинхронный мастер мастер. Шардинг библиотекой представлен. Но вроде работает ОК.
Evgeny
ОК, спасибо большое, поковыряю дальше сам.
KlonD90
Вот на медиазоне база дико маленькая шардинг не нужен как и винил
KlonD90
Все в мемори
Богдан
Народ а кто знаком с go или elixir/erlang, может знаете насколько эффективна система горутин и процессоров на одноядерном vps? Просто у меня есть подозрение что на одноядерном процессоре event-loop ноды будет эффективней других схем вытесняющей многозадачности
Anonymous
Доброго времени суток всем,кто нибудь сталкивался с node:55666) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): ReferenceError: res is not defined [💻] (node:55666) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code. На экспрессе,при обертывание в обработку ошибок не узнаёт res,если не вставлять обработчик выдаёт Users/__id0/Desktop/Projects/Store/node_modules/express/lib/router/route.js:202 [💻] throw new Error(msg); [💻] ^ [💻] [💻] Error: Route.get() requires callback functions but got a [object Promise]
Anonymous
код хандлера exports.catchErrors = (fn) => { return function(req, res, next) { return fn(req, res, next).catch(next); }; }; код роута router.get('/stores/test', catchErrors(GitHub.getProfileBlog('get')))
Anonymous
Код метода в классе static async getProfileBlog(usernameToSearch) { const searchURL = "/" + usernameToSearch; const commonData = await GitHub.request(searchURL);; const firstSearchResult = commonData; const profileURL = "/users/" + firstSearchResult; console.log(commonData) // res.json(commonData) res.render('index', {title: commonData['origin'], name: req.name }) // Make this work from more efficient } }
Alex
привет
Alex
всем
cloudedbe
ну откуда ему знать
Alex
есть проблема, сделал парсер старого сайта так как там неструктурированный материал
Alex
и как только он парсит
Alex
сайт ложится
cloudedbe
catchError у тебя пускает три параметра в getProfileBlog, а в самом getProfileBlog ты ожидаешь только usernameToSearch, который на самом деле req
Alex
как эту проблему можно обойти?
cloudedbe
у тебя тупо нет res в getProfileBlog
Anonymous
у тебя тупо нет res в getProfileBlog
ну он render тогда не распознает
Anonymous
хотя другие методы проходят
Anonymous
exports.createStore = async (req, res) => { const store = await (new Store(req.body).save()) req.flash('success', `Store succesfull added ${store.name}. Care to leave a review?`) res.redirect(`/stores/${store.slug}`) }
Anonymous
router.post('/add', catchErrors(storeController.createStore))
Dmitry
юзает кто orm Sequelize ? Может для начало просто чистый драйвер юзнуть?
Dmitry
есть либа для промисификации? Как то встречал, но забыл как называется. А вот в sequelize есть промисы?
KlonD90
конечно
KlonD90
просто калбэк не передаешь
KlonD90
а сразу then
Dmitry
а сразу then
это в секвалайз? О круто. А асинк аваит она понимает? А то с чистым драйвером пока поэксперементирую. Там помогет util.promisify() )
KlonD90
в чистом драйвере тоже должны быть промисы давно
KlonD90
(хз где их вообще нету сейчас разве что в основной библиотеке ноды почему кстати еще нет? @ChALkeR )
KlonD90
от postgresql?
Dmitry
mysql модуль
Nikita
(хз где их вообще нету сейчас разве что в основной библиотеке ноды почему кстати еще нет? @ChALkeR )
Потому что 1) новый апи надо делать, и просто промисифаем на него ложится не всё 2) при этом совместимость важна 3) при этом были высказаны опасения про усложнение отладки 4) см п.1 - часть апи вообще надо будет переделать на for await, когда он будет, а переделывать два раза не круто, потому что слишком часто экосистема переписывать тоже не любит @vkurchatkin может больше сказать, кстати
Vladimir
Да я то вообще за кардинальное обновление АПИ
Nikita
Я про п.3 тебя кастанул =)
Nikita
Ты там более в курсе должен быть по нему, чем я.
Nikita
Я про https://github.com/nodejs/post-mortem/issues/16
Vladimir
А, да я считаю что пост мортем важен очень малому числу людей
Nikita
А я считаю, что если промисы его ломают, то он уже сломан, и смысла тянуть нет.
Vladimir
Именно, те кто его хочет, могут просто не использовать промисы
Nikita
Не могут.
Nikita
Промисы в экосистеме везде уже.
Vladimir
Ну экосистему тоже можно не использовать
Nikita
А, ну да, конечно =)
KlonD90
понял что нет
KlonD90
Ок