У меня есть эта модель данных:
type Item {
id: ID! @unique
title: String!
description: String!
user: User!
pictures: [Picture]
basePrice: Int!
addons: [Addon]
}
Я пишу запрос parsedItem, который берет id из аргументов и ищет Item (используя запрос по умолчанию для Item, сгенерированный Prisma), что-то вродеthis:
const where = { id: args.id };
const item = await ctx.db.query.item({ where },
`{
id
title
...
Мне нужно показать во внешнем интерфейсе вычисленное значение: «dynamicPrice» зависит от количества Аддонов, которые имеет Предмет.Например: Элемент № 1 имеет 3 дополнения, каждое дополнение имеет значение 5 долларов.Это вычисленное значение должно быть
dynamicPrice = basePrice + 3 * 5
Отношение Аддон может измениться, поэтому мне нужно вычислять это при каждом запросе, который выполняет интерфейс.
Я бы очень хотел сделать что-то вроде:
item.dynamicPrice = item.basePrice + (item.addons.length * 5)
и верните этот элемент в распознаватель, но это не работает.Это выдает ошибку:
"message": "Невозможно запросить поле \" dynamicPrice \ "для типа \" Item \ "."(, когда я пытаюсь запросить элемент из внешнего интерфейса )
Это сообщение об ошибке заставляет меня задуматься: я должен создать dynamicPrice как поле в модели данных?Могу ли я заполнить это поле в решателе запросов?Я знаю, что могу, но это хороший подход?
Это пример, мне нужно создать больше вычисляемых значений для этой модели Item.
Какое лучшее масштабируемое решение/ обходной путь для этого простого варианта использования?