Я настраиваю 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
не определен в модели (значение: не определено)."
Я не знаю, является ли это ожидаемым поведением, я должен признать, что меня немного смущает способ функционирования отношений, но если это так, то как мне поступить?