Loopback4 在 findOne with MongoDB 中可能存在的错误



描述/重现步骤/功能建议

我只有 2 个模型测试和测试测试有(身份证,姓名,年龄(atest 有 (testId(,它指的是来自测试模型的 id

我只有 1 个控制器(测试(和 2 个端点获取 '/eltest'> 通过 testId 找到一个

return await this.atestRepository.findOne({where : {testId : "5ca358720916cec7fd29e875"}});

获取 '/othertest'>其中 findOne by id

return await this.atestRepository.findOne({where : {id : "5ca3589e0916cec7fd29e87a"}});

当前行为

第一个运行良好 - 但第二个找不到存在记录

预期行为

两者都应该工作并在数据库中找到存在的记录

我尝试过的搜索和解决方案

在测试模型中将 @model(( 更改为 @model({ settings: { strictObjectIDCoercion: true, }, }( ;像开关一样工作 - 它会损坏工作端点并修复损坏的端点

请使用此存储库重现该问题

在这种情况下,您需要使用 2 个不同的存储库。看这里

return await this.atestRepository.findOne({where : {id : "5ca3589e0916cec7fd29e87a"}});

测试模型 ID 列应对应于测试模型中的 ID 字段。它永远不能是测试模型 ID。我认为你打算做的是

export class AtestController {
  constructor(
    @repository(AtestRepository)
    public atestRepository : AtestRepository,
    @repository(TestRepository)
    public testRepository : TestRepository,
  ) {}
  @get('/eltest', {
    responses: {
      '200': {
        description: 'Array of Atest model instances',
        content: {
          'application/json': {
            schema: {type: 'array', items: {'x-ts-type': Atest}},
          },
        },
      },
    },
  })
  async find() {
    return await this.atestRepository.findOne({where : {testId : "5ca358720916cec7fd29e875"}});
  }
  @get('/anothertest', {
    responses: {
      '200': {
        description: 'Array of Atest model instances',
        content: {
          'application/json': {
            schema: {type: 'array', items: {'x-ts-type': Atest}},
          },
        },
      },
    },
  })
  async findA() {
    return await this.testRepository.findOne({where : {id : "5ca3589e0916cec7fd29e87a"}});
  }
}

注意我在这里使用testRepository。这应该行得通。希望对您有所帮助。

也请更换

@model({ settings: { strictObjectIDCoercion: true, }, })

@model()

相关内容

  • 没有找到相关文章

最新更新