Какой 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 проекта. Вместо этого он рекомендует книжную полку и продолжение


27
Судя по документам, похоже, что Sequelize намного опередил этот проект.
— Тони О'Хаган

Это еще один отличный вариант для тех, кто ищет mysql ORM. Синтаксис более сложный, но приятный.
— Дрезенде

2
проект изменил URL: github.com/dresende/node-orm2
— Capy

Я получаю эту ошибку «Ошибка: не удается найти модуль« шляпа »» при попытке развернуть это. .. никакое количество npm установки или переустановки, кажется, не помогает. Какие-либо предложения? Спасибо
— Джин Бо

1
Node-orm2 больше не поддерживается активно. Это ссылки на sequelize и bookshelf.js.
— Печенье

150

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


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.


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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.