描述/重现步骤/功能建议
我只有 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()