2017-04-11 2 views
0

ich zwei LoopBack Modelle, A und B. Teil ihres Codes ist wie folgt:LoopBack accessToken in aufgerufenen Methode Beobachter

A.beforeRemote('create', function (ctx, unused, next) { 
    ... 
    B.findById(idForB, callBack); 
    ... 
}); 

B.observe('access', function (ctx, next) { 
    const token = ctx.options && ctx.options.accessToken; 
    const userId = token && token.userId; 
    ctx.query = ctx.query ? ctx.query : {}; 
    ctx.query.where = ctx.query.where ? ctx.query.where : {}; 
    ctx.query.where.allowedUserId = userId; 
}); 

Nun B Zugang zu beobachten Haken accessToken hat, wenn REST Anrufe direkt von B hergestellt werden/API.

Wenn Sie jedoch einen API-POST-A/API-Aufruf erstellen, versucht A's beforeRemote-Hook on, B.findById aufzurufen, was wiederum Bs Zugriffsbeobachtungs-Hook auslöst, aber in diesem Szenario gibt es kein accessToken; nicht einmal Option.

Wie propagiere ich Zugriffsinformationen von A nach B?

Antwort

1

Sie übergeben es im Optionsargument. Wie unten erwähnt, wenn Sie etwas Eigenes machen, vergewissern Sie sich, dass options.accessToken gesetzt ist oder stellen Sie es selbst ein. findById usw. haben bereits den Mechanismus, um das options-Objekt bereitzustellen.

https://loopback.io/doc/en/lb3/Using-current-context.html

Jede zusätzliche Kontext wird in den „Optionen“ Argument übergeben. Eingebettete Methoden wie PersistedModel.find oder PersistedModel.create bereits akzeptieren dieses Argument, benutzerdefinierte Benutzermethoden müssen geändert werden, um es auch zu akzeptieren. Wenn eine Methode eine andere Methode aufruft, muss das Argument "options" in der Aufrufkette übergeben werden.

Um den „Optionen“ -Argument Samen, wenn eine Methode über eine REST Aufruf aufgerufen wird, muss das „Optionen“ Argument mit einem bestimmten Wert in remoting Metadaten kommentiert wird in der „http“ Eigenschaft festgelegt.

Optional können Anwendungen den Wert für "Optionen" anpassen, wenn sie über REST aufgerufen werden.

+0

> Immer wenn eine Methode eine andere Methode aufruft, muss das Argument "options" über die Aufrufkette weitergegeben werden. In'A.beforeRemote ('create', 'hook, ich fange' B.findById' an. Ich bin mir nicht sicher, wie man die Optionen _weitergibt. –

+0

Machen Sie es zu einem Versprechen wie im Beispiel und geben Sie es weiter als drittes Argument. – Undrium

Verwandte Themen