Гнездо JS: проблема с использованием ResolveProperty. Получил "UnhandledPromiseRejectionWarning: TypeError:" - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть родительская модель (камера), которая содержит идентификатор дочернего элемента (конвейер), как показано ниже:

@ObjectType('camera')

export class CameraModel {
  @Field(() => ID)
  _id: String;

  @Field()
  name: String;

  @Field(() => ConveyorModel)
  conveyor: ConveyorModel;
}

Поэтому, чтобы получить подробную информацию о "конвейере", мне нужно использовать декоратор @ResolveProperty в camera.resolver.ts (примечание: показывает только связанный метод)

import { CameraModel } from './models/camera.model';
import { ConveyorService } from "../conveyor/conveyor.service";
import { ConveyorModel } from "../conveyor/models/conveyor.model";

@Injectable()
export class CameraResolver {
  constructor(    
    private conveyorService: ConveyorService, 
    private cameraService: CameraService,
    ) {}

  @ResolveProperty('conveyor', type => ConveyorModel)  
  async getConveryor(@Parent() CameraModel) {
    const { cid } = CameraModel;
    return this.conveyorService.findOne(cid);     
  }
}

Я получил ошибку ниже после запуска сервера. В основном из генератора схемы graphql.

(node:30636) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'getObjectType' of undefined

...

(node:30636) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:30636) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Однако, если я закомментирую блок @ResolveProperty, все будет хорошо. Но я не могу просто получить детализацию конвейера (только получить ID).

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 25 февраля 2020

Основано на моих проблемах, связанных с поиском: https://github.com/nestjs/graphql/issues/158

Исправлено.

Не используйте декоратор строки @Resolver ('YourModel') ). Просто используйте @Resolver (of => YourModel);

Документ Nest JS в этой части действительно недостаточен.

...