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 а не использовать их!
  • Вопрос задан
  • 2525 просмотров
Пригласить эксперта
Ответы на вопрос 3
@xfg
Не совсем понятно, что хотите получить. Но можете посмотреть typeorm. Это единственная orm в node.js реализующая паттерн data mapper, все остальные реализуют паттерн active record. Но условия выборки всё равно придется писать.
Ответ написан
zergon321
@zergon321
Погуглите метапрограммирование и динамическую генерацию и интерпретацию кода. В Python, например, есть функция exec(), которая принимает на вход строку, содержащую код, который необходимо интерпретировать и выполнить, а еще можно сообщить ей словари, заменяющие обычные локальную и глобальную области видимости переменных. Может, и в Node что-то такое есть...
Ответ написан
@Mikhail_V
Не нашёл ответ?
Тоже заинтересовал данный вопрос..
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
TeamJet Москва
До 100 000 руб.
Breadhead Санкт-Петербург
от 120 000 до 160 000 руб.
от 130 000 до 150 000 руб.
18 окт. 2019, в 23:45
150000 руб./за проект
18 окт. 2019, в 20:01
15000 руб./за проект