@ExcaliBUR95

Как установить лимит в работе с массивами в БД(mongoose)?

621b48d3b97f5111711566.png621b48d9af623532643225.png
В общем вот схема и контроллер, задача такая
Нужно установить лимит на взятие книг в аренду, и если больше 3х книг то чтоб булевый тип стал false,(он закоментирован потому что нод ругался, решил позже разберусь, но буду рад если и тут подскажут)
пробовал limit() не получилось, не работает с findByIdAndUpdate(), пробовал тернарным, иф элс, тоже не работает.. гуглил, не нашел ничего такого
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
Grapeoff
@Grapeoff
В чём концепция...?
Начну немного не с сути вопроса, но вам это также пригодится.
  1. Модель называем не Clients, а Client. Множественные числа используем когда говорим о массиве. Вы создаете модель одного клиента, а не нескольких.
  2. isBlocked - бесполезное поле. А ругается оно, потому что ждёт класс Boolean, а вы тип передаёте.
  3. Скорее всего, у вашего клиента не может быть две одинаковых книги, поэтому используем не $push, а $addToSet.

А теперь к вашему вопросу.

Просто отталкивайтесь от размера массива.

Вначале получаете клиента по id и если не найден то выбрасываете ему 404.
Далее делаете проверку на length его книг, и если оно меньше 3-х (советую вынести в константу), то делаете $addToSet, иначе выбрасываете Bad Request или что-то подобное.

Крайне советую делать добавление книги отдельным запросом, а не arr.push на документе и последующим save.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы