Есть ли какие живые современные ODM для mongodb?

Может кто знает какие проекты, в которых есть жизнь? А то дедушка mongoose несколько уродлив и стар в плане api. Хотелось бы видеть es6 классы, нормальное наследование, а не через костыли типа loadClass и discriminator, можно и без всяких схем- как по мне валидация на этом уровне далеко не всегда нужна. Вряд ли я мог такое пропустить, если бы оно существовало, но все же :)
Натыкался на:
mongorito.com
www.npmjs.com/package/camo
Но что то они сомнительные, полуживые...

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Нет, потому что они никому не нужны.

Кто не нужен? ODM вообще или ODM помимо mongoose?

тогда точно что никому, но более пол ляма загрузок mongoose в неделю :)
Тут варианта 3:
— не юзать ооп, никаких моделей и/или дергать с классов напрямую драйвер mongodb, походу пойдет разве что для мелких pet проектов, без команды...
— придаваться извращению с собственными велосипедами моделей и элементами ODM, запилить хотя бы CRUD
— юзать готовую ODM
так что...

Тут как раз наоборот. В основном для мелких и пет проектов используется монгусь и прочее. В нормальных больших проектах его используют только там, где это «исторически сложилось» и не дошли руки это выпилить. Все потому, что от ODM пользы никакой. А она привносит с собой кучу говна в виде ненужных абстракций, кучи бесполезных классов и генерации кривых запросов.
И ООП никто юзать не запрещает — пользуйтесь на здоровье. Оно преспокойно живет себе без всяких ODM.

С ООП тут же выходят зачатки ODM, как ни крути. Тоже реализуешь костяк этот. Да без всяких схем и прочего, но минимальные возможности CRUD все ровно запихнешь в какой то базовый класс Model и начинаешь от него наследовать все сущности, в итоге получается по сути ODM, там же захочешь find запилить, пробрасываешь api драйвера туда и выходит велосипед. К удивлению, что то совсем мало готовых реализаций оказалось, для js комьюнити как то несвойственно- обычно есть десятки реализаций одного и того же.
Потому и ищу общепризнанный минимальный класс ODM, чтобы кто то другой его написал и поддерживал, а не самому велосипеды велосипедить, но выходит либо перегруженный стремноватый местами монгус, либо пара чьих то пет проектов :)

ООП — объектно ориентированное программирование. Джаваскрипт — один из самых объектно ориентированный языков. Бог дал ему и вам возможность создавать объекты без классов — пользуйтесь этим. На кой вы их (классы) тулите туда, где они не нужны. Работайте с объектами. Запросы из базы возвращают вам объекты. Нужно что-то записать в базу — создайте нужный объект и все, без классов и прочей фигни, и запишите потом его. Зачем какой-то базовый класс с крудом, если вам нативный драйвер дает все необходимые методы. Какая разница будете вы их вызывать из своего класса (предварительно создав объект) или же из нативного драйвера передавая туда тот же самый объект?

Подпишусь на коменты, просто чтобы в 100 раз убедиться, что в JS без костылй из говна и палок низзя. :-)

что в JS без костылй из говна и палок низзя

дык, а какое отношение имеет JS к конкретной реализации ODM? JS вообще прекрасен :)

Есть живой но совсем не для JS. Называется Circe(кодек JSON) который превращает JSON документов в классы без лишнего бойлерплейтп.

Будет ли этого хватать зависит от моделей в коде и в базе.

Скала драйвер + circe делает это же. Если надо пересобирать одну модель в другую это конечно не про circe.

с монгусом мне не надо проверять — существует ли коллекция или нет

Ага, жаль только что разрабы не отказались от исторических решений и не прикрутили ему прозрачное наследование, пусть и с breaking changes. Кажется, там можно было вообще отказаться от отдельной сущности схем и втулить все в модели и наследуйся себе красиво, как с обычным прототипным ооп, но нет. Похоже, красивых решений с mongoose не получить еще долго.

Подписаться на комментарии