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

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

Ответ 1

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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

Ответ 4

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