Eu trabalho com PHP e uso muito Laravel, Eloquent ORM. Um dia precisei pegar um projeto com nest.js e procurei algo parecido com o que eu ja conhecia, e encontrei uma combinação que serviu muito bem. knex.js e objection.js. Com essa combinação eu consigo fazer tanto consultas "cruas" no banco, quanto consultas baseadas nas minhas classes de entidade (no Laravel são models).
https://knexjs.org/
https://vincit.github.io/objection.js/
Acho que com os outros mais falados (type orm, sequelize, prisma, etc) você consegue fazer as mesmas coisas que com esta combinação, mas eu acho que a dev exp do objection muito boa e quando precisar de algo mais complexo, é fácil usar o knex pra fazer uma consulta crua, vale conferir.