Ale
https://github.com/mongodb/node-mongodb-native
Vladimir
Хотя недавно наблюдал в нем фейл при работе с более новой монгой
Таймураз
Мы люди глупые (или нет), часто серверное ПО не обновляем
Vladimir
Ну часто обновляуют СУБД пожалуй только глупые люди
Ale
ну патчи есть смысл накатывать, все же)
Таймураз
Ну да, принцип "работает- не трогай" мне не чужд Потыкаю палкой в либу, спасибо)
Ale
ну патчи есть смысл накатывать, все же)
конечно также есть смысл читать, что он включает
Vladimir
ну патчи есть смысл накатывать, все же)
Не сказал бы, разве что мегасекьюрити проблемы
Vladimir
Обновление СУБД - почти всегда дайнтайм
Vladimir
даунтайм
Evgeny
а как же реплики? щарды?
Vladimir
Ну если есть мастер-слейв - то все равно будет даунтайм
Vladimir
CAP теорема, все дела
Dmitrii
ребят те кто тут нативный драйвер рекомендуете, чем хэндлите валидацию и хуки, которые из коробки в монгусе?
Vladimir
Просто код
Ale
явно ж не драйвером к базе, лол)
Vladimir
Валидацию - как кому нравится, там та же json schema
Vladimir
Вообще к бд это мало отношения имеет
Vladimir
Валидировать нужно входные данные от пользователя
Dmitrii
серьезно?.... мда
Vladimir
По умолчанию то, что ты получаешь от юзера, и то, что ты хранишь - две разные вещи
Ale
ваша модель бл не может быть "невалидной", она всегда должна сохранять инвариант
O.
Кажется валидация в два этапа. От пользователя и на базу
O.
Иль нет?
Ale
т.е. да, валидация имеет смысл только на уровне запроса
Ale
а если кто-то пытается поломать инвариант модели, то это рантайм эксепшн
Vladimir
На базу зачем? Ты же сам создаешь запись
Vladimir
Создавай только валидную
Dmitrii
запроса куда? на рест апишку или на слой бизнес логики?
Evgeny
Ну если есть мастер-слейв - то все равно будет даунтайм
зависит от того как обановлять. поднять новые инстансы эппа с коннетком к слейву в ро режиме, опустить старые эппы, обновить мастер. опустить новый ро эппы
Evgeny
тут, правда, что считать даунтаймом
Ale
запроса куда? на рест апишку или на слой бизнес логики?
запроса из внешнего мира, т.е. в апишку
Dmitrii
ну так себе идейка
Ale
почему?
Vladimir
Валидировать записи перед сохранением базу смысла нет
Vladimir
Почему они вообще должны быть не валидные?
Ale
вот и я про это же)
Dmitrii
а между сохранение БД и вход на АПИ у нас как бы слоев быть не может?
Dmitrii
бизнес логика например
Ale
может, только мы их контролируем
Vladimir
Вот на входе и надо валидировать - там может быть что угодно
Ale
вы валидируете бизнес-логику?)
Ale
типа а вдруг оунер вас обманывает?
Ale
и неправильные сценарии говорит?
Dmitrii
нет, валидация как часть бизнес логики
Ale
можно с примером, я пока не понимаю
Ale
там бизнес-правила
Ale
и если они не соблюдаются - то это исключительная ситуация
Dmitrii
а почему валидация не бизнес правило? принимать определенные данные , а другие нет - это требования бизнеса
Vladimir
Своя валидация теоретически может быть в каждом слое
Vladimir
Но на практике это пустая трата циклов в монолитном приложение
Dmitrii
сохрять в БД тоже можно в контроллере, теоретически))
Ale
например пользователь младше 18 лет пытается получить доступ к игре/фильму 18+, это ошибка
Ale
это исключительная ситуация, он вообще туда не должен был попасть
Vladimir
Ну это бизнес логика
Vladimir
Валидация не причем, БД не причем
Ale
а кто-то пытается отправить NaN$ это невалидное что-то
Ale
а кто-то пытается отправить NaN$ это невалидное что-то
нам бизнес не говорил, что NaN посылать нельзя
Vladimir
С использованием статической типизации вообще все становится просто
Vladimir
На входе ты имеешь что угодно
Vladimir
Нужна функция которая вернте котнкретный объект или ошибку
Dmitrii
с одной стороны просто, с другой свои сложности тоже появляются
Vladimir
Дальше уже только бизнес логика и трансформация
Ale
типа того
Ale
в общем, валидация и бизнес-правила разные вещи
Ale
и то что всякие монгусы их смешивают не очень хорошо
Ale
во-первых бизнес-правила можно тестить отдельно от всего
Ale
от базы и запросов
Vladimir
Ну суть монгусов и прочих в том чтобы бизнес-модели данных сразу могли бы сохрнаться в БД
Vladimir
сама идея так себе
Ale
по-хорошему модель монгуса это просто dao
Ale
а модель бл отдельно
Vladimir
Проблема в том что это JS, а от монги ты и так получаешь JSON
Vladimir
Чтобы работать с ним не нужно никакого маппинга или чего то такого
Ale
ну, я не работал еще с pgsql на ноде, но уверен, что там тоже тебе на выходе js объект)
Vladimir
Это детали
Vladimir
Не знаю, чего там плохого
Dmitrii
монгу впоследне время модно засирать