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

264

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

  • 0
    Но это очень интересная тема. Хотите ли вы получить доступ к сторонним разработчикам для изменения данных на вашем сайте? Может быть, лучше создать промежуточную библиотеку js, которая отправит параметры запроса (метаязык) бэкэнду?
  • 2
    @sergzach Хотите разработать? Google для "спящего режима кэширования".
Показать ещё 10 комментариев
Теги:
orm

4 ответа

86
Лучший ответ

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

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

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

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

  • 24
    Судя по документам, похоже, что Sequelize намного опередил этот проект.
  • 0
    Это еще один отличный вариант для тех, кто ищет mysql ORM. Синтаксис более сложный, но приятный.
Показать ещё 9 комментариев
106

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

  • 10
    Я также хотел бы отметить, что node-orm2 или persistence.js не предоставляют механизм миграции. persistence.js не поддерживает postgres. Sequelize делает обе эти вещи.
  • 0
    node-orm2 с недавних миграций
Показать ещё 16 комментариев
19

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

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

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

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

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

  • 0
    похоже, что persistencejs.org сейчас указывает на какой-то нежелательный сайт, работает только GitHub
9

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

  • 7
    В настоящее время Persistence.js поддерживает и VARCHAR.
  • 8
    В базах данных, таких как PostgreSQL, TEXT и VARCHAR абсолютно одинаковы, единственное отличие состоит в том, что если вы установите ограничение в байтах (VARCHAR (255)), то у вас есть издержки для проверки ограничения. Нет абсолютно никаких проблем в использовании TEXT для всего в PostgreSQL.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню