Комментарии 20
Просто реклама ORM.
Когда выпускается какой-то новый продукт, то хочется понимать чем он лучше старых, а их уже не мало. Лично использовал knex, sequelize, но читал и про другие ORM для node.
Какие проблемы существующих ORM решали разработчики нового продукта?
Prizma это graphql интерфейс к базе данных. По сути нужно определить только ко стиук уиу данных и весь ин ерфейс уже готов. В этом е смысл основной.
Это был лишь перевод оригинальной статьи из блога prism.io
Сравнения - это тема отдельной статьи.
Вообще ORM зло
Спорная тема.
С одной стороны (в идеале)
экономим время разработчика, тк 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.
Напиши сюда Slack и GitHub Discussions, уверен помогут написать необходимый запрос, в крайнем случае заведут issue.
Вендор лок на описание схемы БД не выглядит классным
Проект в Open Source: https://github.com/prisma/prisma
А каскадное удаление то завезли?
А то я решил попробовать призму после TypeORM и слегка прифигел, увидев, что нет каскадного удаления.
А каким образом ORM для TS относится к golang? (Я про хаб и теги)
Может кто-нибудь знает, отчего в статье о том, что что-то готово для production нет информации о тестах? Идеален был бы пример того как как работать с фикстурами, мокать подключение и возвращать мокнутый объект-значение.
Prisma: Полноценный ORM для Node.js и TypeScript