LoopBack 4 とその mysql コネクタを使用して API をセットアップしています。だから私はパイロットとの @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>;
そこで、私がやりたかったことは、飛行機を作成し、そのパイロットを 1 回のリクエストで追加することです。私の飛行機のリポジトリで、私はこのようなものを作りました:
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モデルで定義されていません (値: 未定義)。"
これが予想される動作であるかどうかはわかりません。関係の機能方法に少し混乱していることを認めなければなりませんが、そうである場合、どうすればよいでしょうか。