Loopback4 修改存储库 'findById' 操作中的过滤器参数
Loopback4 modifies filter parameter in repository 'findById' operation
在创建问题之前,我正在这里尝试,因为这可能只是我对如何在 LB4 中使用过滤器的理解。
我在 lb4 应用程序中使用 postgresql 作为数据库。
我做了我的控制器,我的模型,并添加了逻辑。我希望我的模型在响应中返回一些关系,所以我创建了一个将在控制器和存储库中使用的默认过滤器:
const includedRelations = {
include: [
{
relation: "licenseeloans",
scope: {
include: [
{
relation: "member"
}
]
}
},
{
relation: "weaponloans"
},
{
relation: "initiator"
},
{
relation: "returnInitiator"
}
]
}
这是控制器部分:
console.log(includedRelations.include[0].scope)
const newLoanWithRelation = await this.loanRepository.findById(newLoan.id, includedRelations);
console.log(includedRelations.include[0].scope)
我发现使用这种方法得到了这个结果:
{ include: [ { relation: 'member' } ] }
{ include: [ { relation: 'member' } ],
where: { id: '42177991-308b-488c-b9d5-f50496d08281' } }
下一次迭代:
{ include: [ { relation: 'member' } ],
where: { and: [ [Object], [Object] ] } }
将 findById 与过滤器一起使用修改过滤器对象(通过填充?)是正常行为还是错误?什么应该是我最好的选择,每次我想从存储库中获取具有关系的对象时克隆包含过滤器?我 运行 进入这个是因为在几次请求之后,我的过滤器太深并且 loopback4 抛出“QUERY_OBJECT_TOO_DEEP”错误。
注意:我没有检查 find 和 findOne 等其他方法。
感谢您的帮助:)!
这是 a known bug, and has been fixed in @loopback/repository@3.4.0。
在创建问题之前,我正在这里尝试,因为这可能只是我对如何在 LB4 中使用过滤器的理解。
我在 lb4 应用程序中使用 postgresql 作为数据库。 我做了我的控制器,我的模型,并添加了逻辑。我希望我的模型在响应中返回一些关系,所以我创建了一个将在控制器和存储库中使用的默认过滤器:
const includedRelations = {
include: [
{
relation: "licenseeloans",
scope: {
include: [
{
relation: "member"
}
]
}
},
{
relation: "weaponloans"
},
{
relation: "initiator"
},
{
relation: "returnInitiator"
}
]
}
这是控制器部分:
console.log(includedRelations.include[0].scope)
const newLoanWithRelation = await this.loanRepository.findById(newLoan.id, includedRelations);
console.log(includedRelations.include[0].scope)
我发现使用这种方法得到了这个结果:
{ include: [ { relation: 'member' } ] }
{ include: [ { relation: 'member' } ],
where: { id: '42177991-308b-488c-b9d5-f50496d08281' } }
下一次迭代:
{ include: [ { relation: 'member' } ],
where: { and: [ [Object], [Object] ] } }
将 findById 与过滤器一起使用修改过滤器对象(通过填充?)是正常行为还是错误?什么应该是我最好的选择,每次我想从存储库中获取具有关系的对象时克隆包含过滤器?我 运行 进入这个是因为在几次请求之后,我的过滤器太深并且 loopback4 抛出“QUERY_OBJECT_TOO_DEEP”错误。
注意:我没有检查 find 和 findOne 等其他方法。
感谢您的帮助:)!
这是 a known bug, and has been fixed in @loopback/repository@3.4.0。