Prisma — При использовании полей «включить только возврат вложенных объектов»

#typescript #prisma

Вопрос:

Я написал эту функцию, которая фильтрует конец таблицы building , при необходимости я могу передать Prisma.BuildingInclude объект, чтобы вернуть один или несколько подобъектов.

 async describeEntity(filter: Filter, include?: Prisma.BuildingInclude): Promise<CCResponse> {
  try {
    const entity = await this.prisma.building.findMany({
      where: this.queryCondition(filter),
      include,
    });

    return new CCResponse('OK', entity);
  }
  catch (err) {
    console.log(err);
    return new CCResponse('INTERNAL_ERROR', this.content['GeneralError']);
  }
}
 

Проблема в том, что если я передам include параметр, в ответе prisma у меня также будут поля building . Как я могу вернуть только поля подобъекта, если include параметр присутствует?

Ответ №1:

Вы можете заменить include условие select условием, чтобы решить эту проблему.

Например, чтобы найти много building записей с одним и тем же where условием, но возвращать только поля вложенных объектов нужной связи, запрос может выглядеть следующим образом

  const entity = await this.prisma.building.findMany({
      where: this.queryCondition(filter),
      select: {
            relationSubObjectOne: true,  //change relationSubObjectOne to appropriate relation name..
            relationSubObjectTwo: true,  //change relationSubObjectTwo to appropriate relation name..
            // ... other fields/subobjects you might be interested in.
        },
    });

 

Вы можете узнать об этом больше в подразделе Включить отношения и выбрать поля отношений статьи Выбор полей в документах Prisma.