Как стать автором
Обновить

Комментарии 20

Просто реклама ORM.

Когда выпускается какой-то новый продукт, то хочется понимать чем он лучше старых, а их уже не мало. Лично использовал knex, sequelize, но читал и про другие ORM для node.

Какие проблемы существующих ORM решали разработчики нового продукта?

Prizma это graphql интерфейс к базе данных. По сути нужно определить только ко стиук уиу данных и весь ин ерфейс уже готов. В этом е смысл основной.

Это был лишь перевод оригинальной статьи из блога prism.io

Сравнения - это тема отдельной статьи.

Спорная тема.

С одной стороны (в идеале)

  • экономим время разработчика, тк ORM достаточно умная, чтобы скрыть нюансы БД

  • получаем типизированный интерфейс для БД

  • код и БД всегда согласованы. Через миграции и ещё что-то

  • код не зависит от конкретной БД и есть возможность легко переезжать с одной на другую (если этого требует продукт, или для целей тестирования)

С другой (в худшем случае)

  • (в любом случае) оверхед над нативным интерфейсом к БД

  • разработчик вынужден изучать и SQL и нюансы ORM-а

  • ORM пытается быть слишком умной, порождает неожиданные ошибки и неочевидные проблемы с производительностью

  • чтобы сделать что-то необычное, и зависящее от БД приходится спускаться до raw sql или использовать какие-то интринсики, отказываясь от всех преимуществ

  • получаем вендор-лок не только на БД, но и на ORM

А как будет выглядеть запрос для монгодб?

"Добавить в nested array новый объект tag {tagid=3, name="x"} если в массиве этих объектов еще нету объекта таким tagID=3" в коллекцию Posts где документ PostId = 5

Примеры можно глянуть здесь: https://www.prisma.io/docs/concepts/more/comparisons/prisma-and-mongoose

Если нужно больше информации, то на этой же странице по ссылке, слева сверху будет лупа для поиска, достаточно туда вписать искомое слово, например "MongoDB".

это я к тому что такой запрос нельзя сделать в призм, в отличии от синтаксиса mongo.

Вендор лок на описание схемы БД не выглядит классным

А каскадное удаление то завезли?

А то я решил попробовать призму после TypeORM и слегка прифигел, увидев, что нет каскадного удаления.

А каким образом ORM для TS относится к golang? (Я про хаб и теги)

Но ведь статья не об этом, тут нет ни слова о go

Убрал хаб "Go"

Мельком посмотрел и не заметил особых отличий от того же sequelize. Каких-либо тестов/сравнений с существующими ORM не вижу.

Может кто-нибудь знает, отчего в статье о том, что что-то готово для production нет информации о тестах? Идеален был бы пример того как как работать с фикстурами, мокать подключение и возвращать мокнутый объект-значение.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории