Обратите внимание, что loopback-context
работает не очень надежно, мы рекомендуем передавать контекст через options
объект, как объяснено в https://loopback.io/doc/en/lb3/Using-current-context.html.
Аргумент ctx
, передаваемый хукам операций, таким как access
, является еще одним типом объекта контекста, см. Документацию по Хукам операций .
Чтобы получить доступ к дополнительным заголовкам запроса, вы также должны переопределить метод createOptionsFromRemotingContext
модели, см. https://loopback.io/doc/en/lb3/Using-current-context.html#override-createoptionsfromremotingcontext-in-your-model
module.exports = function Request(Model, options) {
Model.createOptionsFromRemotingContext = function(ctx) {
const base = this.base.createOptionsFromRemotingContext(ctx);
return {
...base,
userAgent: req.headers['user-agent'],
// etc.
};
});
Model.observe('access', function event(ctx, next) {
const options = ctx.options || {};
// options contains data created by Model.createOptionsFromRemotingContext
// but only when invoked via REST API.
// when called from JavaScript (e.g. from unit-tests), options are exactly
// as provided by the caller (often undefined).
const userAgent = ctx.options && ctx.options.userAgent;
// access user-agent and timezone
next();
});
};