Как получить детали запроса и имя таблицы в пользовательском репозитории - Loopback 4? - PullRequest
0 голосов
/ 20 января 2020

Я использую LB4 , и я расширяю все репозитории из Custom BaseRepository, который extends DefaultCrudRepository, я не сделал ничего особенного в этом репо, просто называется super.methods(), один из методов:

create(entity: DataObject<T>, options?: Options): Promise<T> {
  return super.create(entity, options);
}

Теперь мне нужно создать запись в журнале всякий раз, когда запись сохраняется, обновляется или удаляется. Запись в журнале будет выглядеть примерно так:

{
  tableName: string,
  ip: string,
  browser: string
}

Теперь я запутался, как получить имя таблицы и детали запроса в хранилище.

У меня @inject(RestBindings.Http.REQUEST) public request: Request в контроллере, но Я не знаю, как его использовать, какие-либо предложения?

1 Ответ

0 голосов
/ 21 января 2020

Первый импорт Request из @loopback/rest

Второй, @inject(RestBindings.Http.REQUEST) public request: Request в конструкторе контроллера

  • request.headers["user-agent"] содержит данные браузера.
  • request.ip имеет IP. Но учтите, что вы должны поместить эту директиву proxy_set_header X-Forwarded-For $remote_addr; в конфигурацию nginx на случай, если вы используете свой собственный обратный прокси-сервер. Для apache сделайте соответственно.
  • Имя таблицы очевидно, поскольку вы знаете, где вы создаете запись.
...