Обычно плохо добавлять поля в тип, который будет заполняться только в определенном контексте.Вы могли бы добавить rating
к типу Book
, но тогда вы могли бы разрешить его только значением при получении списка книг, которые были заимствованы - если вы выбираете книгу илимассив книг для какого-то другого поля, поле rating
не обязательно имеет смысл.
Возможно, вам понадобится другой тип (и другая таблица, если мы говорим о базовой базе данных) для присоединенияпользователь со своими заимствованными книгами.Что-то вроде:
type User {
id: ID!
checkouts: [Checkout]
}
type Book {
id: ID!
name: String
checkouts: [Checkout]
}
type Checkout {
user: User
book: Book
rating: Int
lastCheckoutDate: Date
# other fields specific to the checkout itself
}
Это делает результирующие данные, возвращаемые запросом, немного более вложенными, но также облегчает моделирование и анализ данных.Решающие устройства для этих полей также могут быть относительно простыми - поле checkouts
для User
и Book
просто получает все Checkouts
по User
или Book
id.Поля user
и book
в Checkout
просто запрашивают User
или Book
по id.