Как опубликовать модель с отношением hasMany - PullRequest
0 голосов
/ 01 октября 2019

Я настраиваю API, используя LoopBack 4 и его разъем mysql. Итак, у меня есть модель Plane, которая имеет отношение @hasMany с пилотами:

    class Plane extends Entity {
     @property({
      id: true,"dataPrecision": 10, "dataScale": 0, "nullable": "N" },
     })
     id: number;

     @property()
     name: string;

     @hasMany(() => Pilot, { keyTo: 'planeId' })
     pilots?: Array<Pilot>;

Итак, теперь я хотел создать самолет и добавить его пилотов по одному запросу. В моем репозитории самолета я сделал что-то вроде этого:

class PlaneRepository extends DefaultCrudRepository<...> {
  planes;

  constructor(
    @inject('datasources') dataSource: any,
    @repository.getter('PilotRepository') getPilotRepository
  ) {
    this.planes = this.createHasManyRepositoryFactoryFor('planes', getIpilotRepository);
  }

И мой контроллер выглядит так:

class PlaneController {
  @post('/project', {
    responses: {
      '200': {
        description: 'Plane model instance',
        content: { 'application/json': { schema: getModelSchemaRef(Project) }        
      },
    },
  })
  async create(
    @requestBody({
      content: {
        'application/json': {
          schema: getModelSchemaRef(Plane, { exclude: ['id'], includeRelations: true }),
        },
      },
    })
    plane: Omit<Plane, 'id'>,
  ): Promise<plane> {
    return this.planeRepository.create(plane);
  }
}

Но когда я пытаюсь вызвать свой маршрут с чем-то вроде этого

{ name: 'Jet 27', pilots: [ { id: 0, name: Chuck Berry } ] }

У меня ошибка 422:

"Недопустимый экземпляр Plane. Подробности: pilots не определен в модели (значение: не определено)."

Я не знаю, является ли это ожидаемым поведением, я должен признать, что меня немного смущает способ функционирования отношений, но если это так, то как мне поступить?

...