Начну немного не с сути вопроса, но вам это также пригодится.
- Модель называем не
Clients
, а Client
. Множественные числа используем когда говорим о массиве. Вы создаете модель одного клиента, а не нескольких.
isBlocked
- бесполезное поле. А ругается оно, потому что ждёт класс Boolean
, а вы тип передаёте.
- Скорее всего, у вашего клиента не может быть две одинаковых книги, поэтому используем не
$push
, а $addToSet.
А теперь к вашему вопросу.
Просто отталкивайтесь от размера массива.
Вначале получаете клиента по id и если не найден то выбрасываете ему
404
.
Далее делаете проверку на length его книг, и если оно меньше 3-х (советую вынести в константу), то делаете
$addToSet
, иначе выбрасываете
Bad Request
или что-то подобное.
Крайне советую делать добавление книги отдельным запросом, а не
arr.push
на документе и последующим
save
.