Я постараюсь объяснить эту странную ситуацию настолько просто, насколько смогу.
Я создал хук операции "before save"
и сделал его в mixin
, чтобы добавить его к некоторым моделям.
этот миксин использует context.options
, чтобы получить текущий userId
, чтобы что-то сделать.
этот миксин работает отлично, если я вызываю операцию напрямую (например, POST /Accounts
).
Но если я вызываю его внутри удаленного метода, context.options будет пустым, например, если у нас есть метод с именем POST /Accounts/Signup
, а внутри него мы вызываем Account.create(...)
, хук "before save"
получает options
как empty object {}
Здесь находится проект песочницы
https://github.com/mustafamagdy/loopback-sandbox-issue
Фрагмент кода миксина выглядит следующим образом:
module.exports = function(Model, options) {
Model.observe("before save", async function(ctx) {
if (ctx.instance.id) return;
const userId = ctx.options && ctx.options.accessToken && ctx.options.accessToken.userId;
if (userId) {
//... do stuff
}
else
{
console.error("Failed to scope " + Model.name + " to user (null)");
}
});
};