Node.js не имеет хорошего ORM для управления схемой/миграцией MySQL... так что я могу использовать SQLAlchemy для управления им?

Мне нужно использовать Node.js, но у него нет хорошего ORM для MySQL. Поэтому я планирую использовать SQLAlchemy для определения моей схемы. И затем используйте node -mysql для выполнения низкоуровневых запросов (конечно, я не смог бы использовать язык запросов SQLAlchemy, который был бы в python.)

Что вы, ребята, думаете?

sequelize кажется лучшим... но кажется, что многие люди его не используют. Также, как насчет миграций? Как бы я справился с этим?

node-orm также не очень активен.

Мысли об этом?

Ответы

Ответ 1

Sequelize - довольно хороший ORM для MySQL и имеет отличную документацию. Вы можете использовать node-migrate для переноса.

Ответ 2

Мы используем Sequelize.js в нашем проекте Node, и я предполагаю, что это работает, но есть gotchas. Одним из примеров является то, что механизм запросов MySQL Sequelize использует строчную привязку к строкам SQL-строки, которую вы его кормите (this.sql.indexOf('SELECT') == 0). Это означает, что он может выйти из строя, если ваш SQL имеет строчные значения. SQL-слова обычно нечувствительны к регистру (хотя в верхнем случае по соглашению), поэтому реализация Sequelize кажется взломом.

В Sequelize с версии 1.3.0 есть поддержка миграции, но я не использовал ее, и я планирую использовать ее самостоятельно.

Я исхожу из того, что использовал ORM Ruby ActiveRecord, и в свете этого и упомянутой выше проблемы я не решаюсь рекомендовать Sequelize. К сожалению, я не знаю, какие лучшие альтернативы там.

UPDATE1: существуют другие ORM, предложенные в "Какой ORM я должен использовать для Node.js и MySQL?" .

UPDATE2: я выпустил свой код перехода Sequelize.js в Github

Ответ 3

Я создатель js-core-data package, он по-прежнему считается бета-версией (хотя я успешно использую несколько реальных проекты). Мне бы хотелось услышать некоторые мысли и отзывы от разработчиков:)

Ответ 4

Вы можете использовать light-orm и mysql:

Bookshelf.js также довольно хорош, но в некоторых аспектах он не является гибким. Например, вы не можете выполнить запрос SQL и преобразовать результат в модели. Итак, используйте световое оружие.

Ответ 5

Недавно я создал mysql-orm, который теперь полностью можно использовать, хотя ему предстоит пройти долгий путь, прежде чем я полностью его довожу.

  • Он позволяет вам определить схему в JSON.
  • Он позволяет вам определять начальные данные в JSON.
  • При необходимости создается база данных и таблицы.
  • Автоматически созданные таблицы заполняются из исходных данных, если они были указаны.
  • Вы можете сообщить библиотеке, чтобы она записывала каждую команду SQL в консоль для диагностики с помощью orm_options.logLevel=3.

Он использует пакет felixge/mysql на сервере, чтобы поговорить с MySQL.

По сравнению с sequelize, он требует значительно меньше кода для запуска, но также несколько менее функциональным.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я автор (в случае, если это не было очевидно)