我建立了连接到mysql数据库的基本模型和控制器。一切看起来都很好,并且正在运行。
我的定义模型如下。
import { Entity, model, property } from '@loopback/repository';
@model({
settings: {
mysql: {
table: 'definition'
}
}
})
export class Definition extends Entity {
@property({
type: 'number',
id: true,
generated: true,
forceId: true,
required: false,
description: 'The unique identifier for a definition',
})
id: number;
@property({
type: 'string',
required: true,
})
name: string;
@property({
type: 'string',
required: true,
})
process_id: string;
constructor(data?: Partial<Definition>) {
super(data);
}
}
export interface DefinitionRelations {
// describe navigational properties here
}
export type DefinitionWithRelations = Definition & DefinitionRelations;
当我启动并运行它后,单击浏览器进行测试。
我单击“尝试一下”以获得get / definitions,唯一启用的可编辑字段是过滤器字段。
它重新填充了这样的值...
{
"where": {},
"fields": {
"id": true,
"name": true,
"process_id": true
},
"offset": 0,
"limit": 0,
"skip": 0,
"order": [
"string"
]
}
我必须清除它才能使其正常工作。当我不带过滤器运行它时,将返回这些结果。
[
{
"id": 10,
"name": "Place Manual Payoff Order Process Config",
"process_id": "Process_PlaceManualPayoffOrderProcessConfig"
},
{
"id": 11,
"name": "test",
"process_id": "Test"
},
{
"id": 12,
"name": "test2",
"process_id": "test2"
}
]
我正在尝试使用过滤器表达式来仅返回具有特定process_id字段的表达式。因此,我将过滤器更改为这样。
{
"where": {"process_id": "test2"}
}
它仍然返回相同的结果。
[
{
"id": 10,
"name": "Place Manual Payoff Order Process Config",
"process_id": "Process_PlaceManualPayoffOrderProcessConfig"
},
{
"id": 11,
"name": "test",
"process_id": "Test"
},
{
"id": 12,
"name": "test2",
"process_id": "test2"
}
]
过滤器当前在环回4中工作还是我使用不正确?
编辑:如果我在URL字符串中发布过滤器,它们将起作用。似乎openapi ui并未将过滤器的该部分生成到URL字符串中。
答案 0 :(得分:1)
好像openapi ui并未将过滤器的那部分生成到URL字符串中。
是的,这是一个精确的描述。
OpenAPI Spec版本3.x没有指定如何将深度嵌套的值序列化为URL查询,而swagger-js
(为LoopBack的REST API Explorer提供动力的库)swagger-ui
默默地忽略了这些值
已报告此问题,并在此处进行讨论: