170 похожих чатов

Если я пишу RESTful API, и мне нужно делать следующие

запросы:
1. Всех пользователей
2. Всех пользователей с их типами
3. Всех пользователей с их типами и связями с группой
Как будет лучше?
/api/users
/api/users/with-types
/api/users/with-types-and-groups
или
/api/users
/api/users?types=true
/api/users?types=true&groups=true

22 ответов

13 просмотров

Ваш restful api пахнет как graphql

Напомню сам вопрос - ну не вижу я середину тут (((

Типы пользователей это их кореша и братухи?

Когда юзеров возвращаешь всех, возвращай только поля с той же таблицы (и максимум отношения типа 1-к-1) по роуту GET /api/users, когда получаешь одного пользователя возвращай все его отношения, включая типов и группы, по роуту GET /api/users/:id

Кстати прикол для любителей TypeORM, если в таблице юзеров 1000 юзеров и каждый юзер находится в 100 группах, вопрос: сколько строк вернёт JOIN юзеров и групп (который происходит при подгрузке отношения)? Поскольку я потерял веру в этот чат, сразу ответ напишу: 100к.

Feanorx
Кстати прикол для любителей TypeORM, если в таблиц...

Ну если агрегировать группы юзера на выходе в какой-нибудь array_agg(jsonb_agg(/* */)) То выйдет 1000 записей (как и должно) а не 100к

Anton K.
Ну если агрегировать группы юзера на выходе в како...

А заставлять целевую аудиторию того сообщения пользоваться SQL это кощунство.

Feanorx
TypeORM так не умеет.

А какая орм так умеет? Просто интересно Это не самая тривиальная задача для орм))

Anton K.
А какая орм так умеет? Просто интересно Это не ...

Табличка от отношения many-to-many все равно будет по итогу прочитана полностью. Но минимизировать количество дубликатов в передаваемых данных умеет MikroORM. Там есть две стратегии разрешения отношений: через JOIN, либо дёргая по ID. Вот тебе нужна вторая. Ещё это умеет Objection

Feanorx
Табличка от отношения many-to-many все равно будет...

микроорм вообще не понравилась самая неочевидная настройка/использование (изза этих fork) изза необходимости юзать легаси декораторы и допиливать тсконфиг еще пришлось чтобы только завести эту микрорм потом она всё равно достает поля которые я не прошу и прибивает им undefined ну и эта тема с fork на каждый чих вообще хз что такое ну и по производительности на последнем месте в сравнении с остальными ормами (@prisma/client sequelize typeorm kysely drizzle) (но возможно я не правильно готовил микроорм)

Anton K.
микроорм вообще не понравилась самая неочевидная ...

Все о чем ты говоришь пофиксили в последних версиях. По производительности не знаю. Сейчас посмотрю.

Feanorx
Все о чем ты говоришь пофиксили в последних версия...

тесты (ровно так же как и щупал микро орм) буквально 3 недели назад делал

Feanorx
А какие?

не просто смотрел как быстро достают данные без joinов await Promise.all() 50_000 queries in await Promise.all() ("SELECT email FROM users WHERE users.id = $1") with random users.id 10 separately times await one by one in for loop 50_000 queries in await one by one in for loop ("SELECT email FROM users WHERE users.id = $1") with random users.id 10 separately times

Anton K.
тесты (ровно так же как и щупал микро орм) букваль...

Зато инстансы получаешь сразу, не надо писать код по проведению результата к entity.

Feanorx
Зато инстансы получаешь сразу, не надо писать код ...

вот не надо давать орму лезть в бл пускай данные принесет а бл сама из них сделает ентити по своим правилам

Anton K.
не просто смотрел как быстро достают данные без ...

Ну это не честный тест. Ты базу перегрузишь таким огромным количеством запросов. Он там под капотом делает запросы типа "where id in" и отсылает на каждую таблицу по одному запросу.

Anton K.
вот не надо давать орму лезть в бл пускай данные ...

"не надо" неприменимое выражение, имхо в кейсе сокращения углов по максимуму - надо в кейсе продового приложения с нормальными временными и денежными инвестициям - наверно не надо

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

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта