Loopback 4 Фильтры, генерируемые чванством, похоже, не работают - PullRequest
1 голос
/ 13 июня 2019

Я установил базовую модель и контроллер, подключенный к базе данных 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;

Когда я ее запускаю и запускаю и нажимаю на проводник, чтобы проверить ее.

Я нажимаю "Попробуйте"это "для получения / определения, и единственное редактируемое поле, которое становится активным, это поле фильтра.

Он заполняется значением, подобным этому ...

 {
  "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"
  }
]

Работают ли фильтры в Loopback 4 или я их неправильно использую?

РЕДАКТИРОВАТЬ: если я публикую фильтры в строке URL, они работают.Похоже, что openapi ui не генерирует эту часть фильтра в строку URL.

1 Ответ

1 голос
/ 17 июня 2019

Кажется, что пользовательский интерфейс openapi не генерирует эту часть фильтра в строку URL.

Да, это точное описание.

В спецификации OpenAPI версии 3.x не указано, как сериализовать глубоко вложенные значения в URL-запросы, а swagger-js, библиотека, поддерживающая swagger-ui (которая поддерживает REST API Explorer в LoopBack), молча игнорирует такие значения.

О проблеме сообщили и обсуждают здесь:

...