Ответы пользователя по тегу SQL
  • Как лучше делать row level security в Node.JS + SQL СУБД?

    @karapet95
    Мне думается, Sequilize тяжелый для таких вещей и сложных запросов.

    Можете попробовать knex.
    В одном месте создаете подзапрос с динамическими where условиями в зависимости от ролей пользователя. Потом в отчетах и других селектах обращаетесь не к таблице, а к ограниченному подзапросу. По такому принципу:
    const ClientsSubQuery = knex.select(1).as('clients');
    const query = knex.select('*').from(ClientsSubQuery);
    console.log(query.toSQL());

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

    Определиться нужно ли вам ORM можете глянув это видео:
    https://www.youtube.com/watch?v=bkDUIIho70o

    Можно и без ORM сделать хорошее приложение.
    Если очень хочется, можете использовать Objection.js или Bookshelf.js. Это более понятные ORM (в отличии от Sequilize), основаные на knex и скорее всего совместимые с подходом показанным выше.

    P.S.: knex умеет миграции и много чего другого. При желании, как и с ORM, вы свое приложение потом сможете переключить например с MySQL на Postgres или наоборот
    Ответ написан
    2 комментария