Какой ORM я должен использовать для Node.js и MySQL? [закрыто]

326

Я переписываю проект для использования Node.js. Я хотел бы продолжать использовать MySQL в качестве базы данных (хотя я не против переписать схему). Я ищу простой в использовании, разумный по производительности ORM, который поддерживает кэширование, отношения «многие к одному» и «многие ко многим». Из найденных мной MySQL ORM, persistencejs и sequelize кажутся наиболее зрелыми. У вас есть опыт работы с любым из них? Каковы соответствующие плюсы и минусы, которые я должен знать в своем решении?

Рядом с Приманом
источник
Но это очень интересная тема. Хотели бы вы получить доступ к сторонним разработчикам для изменения данных на вашем сайте? Может быть, лучше создать промежуточную библиотеку js, которая отправляет параметры запроса (метаязык) бэкэнду?
sergzach
2
@sergzach Хотите разработать? Google для "спящего режима кэширования".
Понзао
Хм ... Некоторые сайты разрешают пользовательские приложения. Или я вас не понял, извините, пожалуйста.
sergzach
2
@sergzach: Кэширование на самом деле является довольно важной особенностью ряда решений ORM. Посмотрите на Кайенну, например.
Nate CK
Попробуйте Oreo . github.com/will123195/oreo
Will

Ответы:

101

Могу ли я предложить Node ORM?

https://github.com/dresende/node-orm2

Там есть документация по Readme, поддерживает MySQL, PostgreSQL и SQLite.

MongoDB доступна с версии 2.1.x (выпущена в июле 2013 г.)

ОБНОВЛЕНИЕ: этот пакет больше не поддерживается, согласно README проекта. Вместо этого он рекомендует книжную полку и продолжение

dresende
источник
27
Судя по документам, похоже, что Sequelize намного опередил этот проект.
Тони О'Хаган
Это еще один отличный вариант для тех, кто ищет mysql ORM. Синтаксис более сложный, но приятный.
Дрезенде
2
проект изменил URL: github.com/dresende/node-orm2
Capy
Я получаю эту ошибку «Ошибка: не удается найти модуль« шляпа »» при попытке развернуть это. .. никакое количество npm установки или переустановки, кажется, не помогает. Какие-либо предложения? Спасибо
Джин Бо
1
Node-orm2 больше не поддерживается активно. Это ссылки на sequelize и bookshelf.js.
Печенье
150

Я бы выбрал Sequelize, потому что это отличная документация. Это просто честное мнение (я никогда особо не использовал MySQL с Node).

alessioalex
источник
10
Я также хотел бы отметить, что node-orm2 или persistence.js не предоставляют механизм миграции. persistence.js не поддерживает postgres. Sequelize делает обе эти вещи.
Airtonix
4
Я использовал node-orm2, и благодаря более качественной документации Sequelize мне удалось гораздо проще его запустить и запустить
Майкл Дж. Калкинс
2
@Gelidus Где ты взял эту информацию?
Уильям Лепински
14
К сожалению, документация Sequelize в последнее время стала ужасной. Я начал использовать Sequelize недавно и был очень доволен документами. Теперь это автоматически сгенерированная куча неработающих ссылок, устаревшей информации и неполных примеров. Я все еще буду придерживаться этого все же. Это не так сложно учиться.
Брэд
2
Просто удалил мой старый комментарий и теперь я на 100% согласен с @Brad, к сожалению :(
Андрей Попов
19

Прежде всего, обратите внимание, что я не использовал ни один из них (но использовал Node.js).

Обе библиотеки хорошо документированы и имеют стабильный API. Тем не менее, persistence.js, похоже, используется в большем количестве проектов . Я не знаю, все ли они все еще используют это, все же.

Разработчик sequelize иногда ведет блог об этом на blog.depold.com . Если вы хотите использовать первичные ключи в качестве внешних ключей, вам понадобится патч, описанный в этом посте . Если вам нужна помощь для persistence.js, есть группа Google, посвященная этому.

Из примеров, которые я понял, sequelize немного больше похож на JavaScript (больше сахара), чем persistance.js, но поддерживает меньшее количество хранилищ данных (только MySQL, тогда как persistance.js может даже использовать хранилища в браузере).

Я думаю, что sequelize может стать для вас подходом, поскольку вам нужна только поддержка MySQL. Однако, если вам нужны какие-то удобные функции (например, поиск) или вы хотите использовать другую базу данных позже, вам нужно будет использовать persistence.js.

hey_lu
источник
1
похоже, что persistencejs.org сейчас указывает на какой-то нежелательный сайт, работает только GitHub
sansknwoledge
10

Одним из основных отличий между Sequelize и Persistence.js является то , что бывшим поддерживают STRINGтипы данных, то есть VARCHAR(255). Мне было очень неудобно делать все TEXT.

Джош Смит
источник
7
В настоящее время Persistence.js также поддерживает VARCHAR.
Alehro
8
В базах данных, таких как PostgreSQL, TEXT и VARCHAR абсолютно одинаковы, единственное отличие состоит в том, что если вы установите ограничение в байтах (VARCHAR (255)), то у вас есть издержки для проверки ограничения. Нет абсолютно никаких проблем с использованием TEXT для всего в PostgreSQL.
переписано
3
Использование TEXT в PostgreSQL на самом деле лучше, даже если он не переносимый.
Cowbert