0

我想创建动态模型、存储库和控制器

export async function dynamicModelsDemo(app: any, modelData: any): Promise<boolean> {
  console.log("ModelData",modelData);

  // assume that this def can be created dynamically (at runtime), e.g. from database info
  const modelDef = new ModelDefinition({
    name: 'contact',
    properties: {
      id: {
        type: 'Number',
        required: true,
        length: null,
        precision: 10,
        scale: 0,
        id: 1,
      },
      name: {
        type: 'String',
        required: false,
        length: 512,
        precision: null,
        scale: null,
      },
    },
  });

  // tryin' to extend Entity with new fields
  const DynamicModel = defineModelClass<typeof Entity, {id: number; title?: string}>(
    Entity,
    modelDef,
  );

  const BookRepository = defineCrudRepositoryClass(DynamicModel);

  inject(`datasources.memory`)(BookRepository, undefined, 0);
  const repoBinding = app.repository(BookRepository);

  const basePath = '/contact';

  const DynamicController0 = defineCrudRestController(DynamicModel, {basePath});
  inject(repoBinding.key)(DynamicController0, undefined, 0);
  app.controller(DynamicController0);

  console.log(basePath);

  return new Promise(function (resolve, reject) {
    resolve(true);
  });
}

我需要帮助我应该如何创建将接收请求正文的 Post 方法,并且该正文将传递给我上面提到的函数,

目前我正在通过这个端点调用 dynamicModelsDemo 函数,

@get('/ping/build', {
modelData : {},
responses: {
  '200': {
    description: 'Test models assemble',
  },
},


})
  async build(): Promise<boolean> {
    return dynamicModelsDemo(this.localApp,this.modelData);
  }

我想将此@get 转换为@post,以便我可以将我请求的正文传递给此函数..

4

1 回答 1

0

这工作得很好,我认为这就是我想要的:

@post('ping/createobject')
async createObject(
    @requestBody() model: any
  ):Promise<boolean> {
    return dynamicModelsDemo(this.localApp,model);
  }
于 2021-10-26T06:38:29.867 回答