Задать вопрос
Sanu0074
@Sanu0074

ORM в nodeJS, как это должно работать?

Для чего мне ORM? - для упрощения процесса сохранения/извлечения объектов в бд. Я много гуглил, смотрел примеры разных библиотек, выделил в основном Sequelize и Bookshelf. Они мне в целом мне показались какими-то конструкторами запросов, вовсе не похоже что какая-либо из них призвана упростить мне жизнь и значительно сократить SQL-код в скриптах, а как раз таки наоборот, помимо SQL мне нужно изучать api этих либ.
К примеру, мне проще написать SQL руками, чем писать подобное чудо:
users.findOne({
  order: [
    ['username', 'DESC'],
   sequelize.fn('max', sequelize.col('age')),
    [sequelize.fn('max', sequelize.col('age')), 'DESC'],
    [sequelize.fn('otherfunction', sequelize.col('col1'), 12, 'lalala'), 'DESC'],
    [User, 'name', 'DESC'],
    [{model: User, as: 'Friend'}, 'name', 'DESC'],
    [User, Company, 'name', 'DESC'],
  ]
  order: 'convert(user_name using gbk)'
  order: 'username DESC'
  order: sequelize.literal('convert(user_name using gbk)')
})

От ORM хотелось бы не такого как дают приведенные мной либы, а что-то вроде где бы я описал в какой-нибудь xml-ке сущность, а она мне сгенерила класс с нужными методами. Даже если такого нет в природе или это не правильно, глупо (я то например не особо знаком с этим вопросом), то подтолкните на мысль, как реализовать подобное самому для своего проекта? Делают ли люди что-то подобное вообще? Пусть здесь будут строгие привила описания или какие-либо ограничения, меня больше интересует теоретический вопрос решения. Например как правильно бы описать сущность, или как проанализировать существующую базу для генерации того или иного кода.... и т.д.

Просто глядя на sequelize и подобные ей либы, хочется писать SQL а не использовать их!
  • Вопрос задан
  • 4269 просмотров
Подписаться 4 Средний 2 комментария
Пригласить эксперта
Ответы на вопрос 4
@xfg
Не совсем понятно, что хотите получить. Но можете посмотреть typeorm. Это единственная orm в node.js реализующая паттерн data mapper, все остальные реализуют паттерн active record. Но условия выборки всё равно придется писать.
Ответ написан
Комментировать
zergon321
@zergon321
Погуглите метапрограммирование и динамическую генерацию и интерпретацию кода. В Python, например, есть функция exec(), которая принимает на вход строку, содержащую код, который необходимо интерпретировать и выполнить, а еще можно сообщить ей словари, заменяющие обычные локальную и глобальную области видимости переменных. Может, и в Node что-то такое есть...
Ответ написан
Комментировать
Lucid ORM проста и удобна
Ответ написан
Комментировать
Katyshin
@Katyshin
ИТ
Тоже задавался этим вопросом. На данный момент сам склоняюсь к тому, что использование ORM вроде бы удобнее работать со связями у моделей (1-1, 1-M, M-M). Часть работы ORM берет на себя.

Но лично я не понял как правильно встроить модели в мои классы, как правильно сопоставить все поля модели, с соответствующими полями моих классов в js или typescript.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы