Anton
Ruslan
Написал модуль для динамической проверки типов переменных, пример:
typeOf([
{selector, is: [String, Object]},
{regExp, is: RegExp},
{returnAll, is: Boolean, optional: true}
]);
Есть у кого какой опыт по этой проблеме? Поделитесь мыслями
https://www.npmjs.com/package/type-of-data
Viktor
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 (само значение не важно, только его тип)
Anton
Evgeny
можно попробовать из экзифа вытащить
Evgeny
@klond90 слушай, а ты же фанат тарантула, можно тебя чуток помучать?
KlonD90
Можно ток я в дороге
Evgeny
Ну значит ответишь когда сможешь.
У них есть движок софия, для множественной записи и редкого чтения. У меня есть маза что эта штука отлично ложится на мой юзекейс. А можно понять про что идёт речь под "записью" - какого порядка обьёмы живут нормально?
KlonD90
KlonD90
Они его выкинули
KlonD90
И написали новый винил
KlonD90
В 1.7 уже он И стабильный
Evgeny
ага, то есть страница на их опенсорс мейлру неактуально более. А что там тогда с персистентностью? Нужно чтобы весь пул данных помещался в память?
По поводу винила - он только на запись или умеет обновлять существущие данные нормально?
KlonD90
Ну терабайт говорят ок. Но там в любом случае индексы должны в мемори помещатся
KlonD90
KlonD90
https://github.com/tarantool/tarantool/wiki/Vinyl-Architecture
KlonD90
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
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))
KlonD90
Dmitry
Dmitry
юзает кто orm Sequelize ? Может для начало просто чистый драйвер юзнуть?
Dmitry
есть либа для промисификации? Как то встречал, но забыл как называется. А вот в sequelize есть промисы?
KlonD90
конечно
KlonD90
просто калбэк не передаешь
KlonD90
а сразу then
Dmitry
а сразу then
это в секвалайз? О круто. А асинк аваит она понимает? А то с чистым драйвером пока поэксперементирую. Там помогет util.promisify() )
KlonD90
KlonD90
в чистом драйвере тоже должны быть промисы давно
KlonD90
(хз где их вообще нету сейчас разве что в основной библиотеке ноды почему кстати еще нет? @ChALkeR )
Dmitry
KlonD90
от postgresql?
Dmitry
mysql модуль
Vladimir
Да я то вообще за кардинальное обновление АПИ
Nikita
Я про п.3 тебя кастанул =)
Nikita
Ты там более в курсе должен быть по нему, чем я.
Nikita
Я про https://github.com/nodejs/post-mortem/issues/16
Vladimir
А, да я считаю что пост мортем важен очень малому числу людей
Nikita
А я считаю, что если промисы его ломают, то он уже сломан, и смысла тянуть нет.
Vladimir
Именно, те кто его хочет, могут просто не использовать промисы
Nikita
Не могут.
Nikita
Промисы в экосистеме везде уже.
Vladimir
Ну экосистему тоже можно не использовать
Nikita
А, ну да, конечно =)
KlonD90
KlonD90
понял что нет
KlonD90
Ок