为什么POST方法针对具有成功插入值的值数组返回500错误?

时间:2019-09-16 12:48:10

标签: swagger loopbackjs openapi loopback4

回送4中,当我发布单个值时,出现一个奇怪的问题:

{
email: "sit@leoVivamusnibh.net",
password: "430975896"
}

昂首阔步,没有问题报告,但是当我发布一系列值时:

[{
email: "metus.facilisis.lorem@sitamet.org",
password: "168978823"
},
{
email: "fringilla@enim.org",
password: "933013104"
}]

该值已发布到数据库,但出现此错误:

{
  "error": {
    "statusCode": 500,
    "message": "Internal Server Error"
  }
}

并在控制台中显示以下行:

  

POST中未处理的错误/用户:500 TypeError:model.toObject不是   功能       在UserRepository.toEntity(D:\ apps \ test \ node_modules @ loopback \ repository \ src \ repositories \ legacy-juggler-bridge.ts:471:39)       在UserRepository.create(D:\ apps \ test \ node_modules @ loopback \ repository \ src \ repositories \ legacy-juggler-bridge.ts:338:17)

用户模型

@model({ settings: {} })
export class User extends Entity {
  @property({
    type: 'number',
    id: true,
    generated: true
  })
  id: number;

  @property({
    type: 'string'
  })
  email: string;

  @property({
    type: 'string'
  })
  password: string;
  constructor(data?: Partial<User>) {
    super(data);
  }
}

用户控制器

async create(
    @requestBody({
      content: {
        'application/json': {
          schema: getModelSchemaRef(User),
        },
      },
    })
    user: Omit<User, 'id'>,
  ): Promise<User> {
    return this.userRepository.create(user,
                                    //{ exclude: ['id'] }
                                      );
  }

2 个答案:

答案 0 :(得分:1)

首先,在LoopBack 4中,POST方法不接受要创建的模型实例数组,它仅适用于单个模型。

话虽如此,当请求包含对象数组时,LoopBack不应响应500错误。我希望得到422 Unprocessable Entity的答复。

请问您能填个错误吗? https://github.com/strongloop/loopback-next/issues/new/choose

答案 1 :(得分:1)

您在请求正文中请求的数组就可以了。

问题是,如果要在数据库中创建这些用户个人资料 您将必须执行以下操作:

async create(
    @requestBody({
      content: {
        'application/json': {
          schema: getModelSchemaRef(User),
        },
      },
    })
    userList: User[],
  ): Promise<User> {
      return await Promise.all(
        userList.forEach(user => {
          return await this.userRepository.create(user);
       ))
  }

希望对您有帮助或有任何疑问或建议,请给我写信。 谢谢