
Сергей
15.02.2017
09:08:23
круто

Alex
15.02.2017
11:14:34
Всё самое интересное пропустил))
Кому там рассказать про sails?))
Я в strongloop/loopback контрибьютил еще до того как их IBM купил.
Дно редкостное

Google

Evgeny
15.02.2017
11:19:55
Мне, мне расскажи
И про сейл и про лупбек

Alex
15.02.2017
11:20:03
Дно редкостное)
Сейл - только читал, лупбэк пользовали

Evgeny
15.02.2017
11:20:16
Ок. а можно подробностей? Ну или вариант лучше?

Alex
15.02.2017
11:20:23
Ушли с него как из страшного сна
Да, всё просто - тогда он делал джойны в памяти
Т.е. если ты хочешь сделать джойн двух таблиц по 10к записей в каждой...
То если у тебя не кончалась память, то кончалось терпение
Потому что _барабанная дробь_
Каждое пересечение еще и в отдельном тике делалось
Это с одной стороны.

Evgeny
15.02.2017
11:22:12
крууууууто...

Google

Alex
15.02.2017
11:22:32
Правда оговорюсь - это было года полтора назад, типа того
С другой стороны - сама идея и в самом деле неплохая. Эдакий конструктор, из которого на коленке можно слепить прототип прям за пару часов
Но реализация... эх
В общем, я бы очень не советовал loopback.

Evgeny
15.02.2017
11:24:19
А что бы советовал?

Alex
15.02.2017
11:24:42
И еще момент - авторизация. У нас был хитрый кейс - чуть более необычная авторизация. Я какого только сатану не призывал, чтобы это реализовать.
Ну.... а какие цели?

Yan?
15.02.2017
11:24:56
какого в итоге призвал?)

Alex
15.02.2017
11:26:11
В итоге переписал на Express + Mongoose + AJV

Evgeny
15.02.2017
11:27:01
Ну вот, например, нужно сделать кучку микросервисов с апи, разными структурами данных, валидайией бла бла бла. Ну не руками же это все реализоввывать! Ну дно ж

Alex
15.02.2017
11:27:50
Нууу смотри. Я бы в этом случае плясал от ORM-а или того, как ты собираешься с базой вообще работать
Потому что их нет в ноде вообще
Ладно, вообще есть конечно. Но чего-то уровня Hibernate или SQLAlchemy нету

Evgeny
15.02.2017
11:28:54
Килотонны человеко-часов переводятся на создание и поддержание кастомных поделок-решений

KlonD90
15.02.2017
11:29:20
потому что все что не hql в принципе воспроизводится спокойно

Alex
15.02.2017
11:31:26
Ну... сформулирую тогда проще.
Мне вот хочется запилить POJO, развесить аннотации, и чтобы весь этот lazy fetch и заодно проблему N+1 из коробки решало.
Ну и ясно, что как самый яркий самородок из Сибири, базу я в конце обязательно поменяю с бесплатного оракла на древний ms sql )

KlonD90
15.02.2017
11:33:33
ну вообщем-то идея хороша. декораторы в принципе есть. ну ты скорее говоришь о сахаре в виде аннотаций. lazy fetch это не уровень ORM. но вот то что ты хочешь можно спокойно открыть спецификацию написать ее учитывая особенности и будет вполне ок работать

Google

Alex
15.02.2017
11:34:34
Не, я ж не спорю, что написать можно. Я про готовое спрашиваю)
Бомбит от этого нереально
ну скажем так, на ноде, имхо, конечно, значительно реже и потребность такая возникает. Хотя, конечно, возникает эпизодически.
Если хочется прям хороший конструктор, то не смотря на все эти ноды и прочее популярное.. ну слушай, Java - твой выбор.
Вот та самая со спрингом и гибернейтом. Как бы не хотелось, чтобы было наоборот, пока это самый прямой и фиче-рич выбор
Туповато, да.
Но хм.. Netty сейчас если не рвёт вообще всех, то стабильно в топе.
Кодится оно просто, прямо и тупо.
Меня ведь не выпилят за это из чатика??))

Evgeny
15.02.2017
11:39:02
Не, норм

Alex
15.02.2017
12:06:47
Там еще про neo4j говорили)))

KlonD90
15.02.2017
12:07:37
только так придем в светлое будущее

Alex
15.02.2017
12:12:01
Если никто не пишет, то возникает резонный вопрос - а почему?)
Наверняка есть некая причина..
Вполне возможно просто потому, что в мире нужен ровно один Hibernate)

KlonD90
15.02.2017
12:12:48
(он же давно не один)

Alex
15.02.2017
12:13:27
Ну вот смотри, odbc - не самая популярная штука

Alex
15.02.2017
12:13:28
https://www.npmjs.com/package/odbc
А как без odbc/jdbc/чего-то такого жить вообще ?
Плюс очень хитрый вопрос с асинхронностью. Если я ничего не путаю (а я могу), то большинство баз очень плохо любят асинхронную работу.
А без connection pool-а никак. А потоков-то в JS нет.
И вот мы уже пишем native library для ноды)

KlonD90
15.02.2017
12:26:19
а причем здесь потоки и connection pool?
это же больше io т.е. пулинг почти все библиотеки умеют
если нужен общий пул то идут уже в какие-нибудь штуки впереди базы
типа pg_bouncer

Dmitry
15.02.2017
12:28:02
Соглашусь с предыдущим оратором, базе собственно всё равно 10 запросов выполнять или 500, на серваке просто лягут диски, все упрется в io

Google

KlonD90
15.02.2017
12:36:15
да тут скорее не было выразительных средств
а теперь уже есть
классы async'и декораторы

Vladimir
15.02.2017
13:15:51
Никто в протоколе монги не разибрается?
А то документация какая-то вялая

Alex
15.02.2017
13:42:14
а причем здесь потоки и connection pool?
А при том, что connection pool нужен не для pg, а вообще для всех типов БД. И если, условно, в Java это все есть в рамках JDBC со товарищи, то в ноде еще это все предстоит реализовать руками.
И тогда, когда последний раз (правда это было давно) я работал с базой напрямую руками - с асинхронным io всё было очень не сладко. Примерно вот так: http://stackoverflow.com/a/7616094/1040070
Насколько знаю, сейчас это куда-то подвинулось, но вообще говоря суть не в этом.
Суть в том, что перед тем как строить абстрактный ORM - под него надо еще и фундамент построить. Поправьте, если ошибаюсь, но в ноде, кажется ничего такого нет ни стандартного, ни стандарта де-факто.

Vladimir
15.02.2017
13:43:16
Ну это очевидно

Admin
ERROR: S client not available

Vladimir
15.02.2017
13:43:23
Но это не дает прямых ответов
Приходиться ковырять вообще все драйвера на всех языках, чтобы сделать выводы

Evgeny
15.02.2017
13:43:59
В ноде очень очевидный драйвер, btw

Vladimir
15.02.2017
13:44:06
Да не очень
Там за слоем сахара и проверки типов плохо читается суть

Evgeny
15.02.2017
13:44:33
Я в 2.1 ковырялся - все было просто и понятно, афаик

Vladimir
15.02.2017
13:44:40
Плюс разбито на два пакета
С дублированием сущностей

Evgeny
15.02.2017
13:44:53
Я, правда, не пытался его понять в целом, просто дебажил конкретную проблему

Vladimir
15.02.2017
13:45:36
Я решил свой драйвер замутить

Alex
15.02.2017
13:45:42
Не уверен, но может вот это поможет:
https://github.com/ReactiveMongo/ReactiveMongo/tree/master/driver/src/main/scala/api/commands

Google

Evgeny
15.02.2017
13:45:47

Vladimir
15.02.2017
13:46:09
Да явно придется все драйвера посмотреть
Но мне нужен минимум функционала

Artem
15.02.2017
13:47:02
Йоу, никто не работал с пушами от ЯД?
Суть в том, что сервер пушит ид операции таким 1080960751286090000
Нормальное число должно быть 1080960751286090017
Это связано с ограничениями ЖСа, как побороть, не знаете?
Яд отдает числом, а не строкой ?

Vladimir
15.02.2017
13:47:35
В чем отдает? Json?

Artem
15.02.2017
13:47:43
Ага

Vladimir
15.02.2017
13:47:48
Тогда увы
Придется брать парсер на js и его модифицировать

Alex
15.02.2017
13:48:11
reviver свой ставить пробовал?

Vladimir
15.02.2017
13:48:56
Там уже поздно
В принципе можно поробовать регэкспом накрыть

Alex
15.02.2017
13:49:21
А, оно туда не сырые данные пихает?

Vladimir
15.02.2017
13:49:24
Но это не особо надежно
Реэкспом найти "my_field": \d+

Alex
15.02.2017
13:54:44
Или как вариант - регулярочкой заменить все 123456 на "123456" и парсить как обычный JSON, но уже со строками вместо чисел.

Дмитрий
15.02.2017
14:36:18
Народ - нужна помощь - возможно нубский вопрос
Перелопачивал легаси es5 на es6 - столкнулся с проблемой что перемнные объявленные до условий в них не видны - кроме возврата к var не вижу выхода.
Было так:
var variable;
if (cond) {
variable = new_value;
}
Сделал
let variable;
if (cond) {
variable = new_value;
}
Плохо ли вернуться к var?
Для таких случаев?