2017-04-11 52 views
0

我有兩個環回模式,他們的代碼A和B部分是這樣的:環回的accessToken在調用的方法觀測

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; 
}); 

現在,B的訪問觀察鉤具有的accessToken當REST調用直接從B製備/ API。

但是,在進行API POST A/API調用時,A的beforeRemote鉤子會嘗試調用B.findById,這會觸發B的訪問觀察鉤子,但在這種情況下,沒有accessToken;甚至沒有選擇。

如何將訪問信息從A傳播到B?

回答

1

你把它傳遞在選項的說法。正如下面所提到的,如果你正在做一些定製確保options.accessToken設置或自己設置它。 findById等已經有機制,提供的選項對象。

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

任何額外的上下文中的「選項」參數傳遞。內置 等方法,如PersistedModel.find或PersistedModel.create已經接受這個參數 ,自定義的用戶方法也必須修改爲接受 。

每當一個方法調用另一個方法時,「options」參數必須在調用鏈中向下傳遞「 」。

種子「選項」參數當一個方法是通過一個REST 呼叫調用時,「選項」參數必須在遠程處理元數據 與在「HTTP」屬性設置的特定值進行註釋。

(可選)應用程序可以通過REST調用時自定義提供給「選項」 的值。

+0

>每當一個方法調用另一個方法時,「options」參數必須傳遞到調用鏈中。 在'A.beforeRemote('create','hook,我正在調用'B.findById'。我不知道如何傳遞options_。 –

+0

使它成爲一個像他們在示例中一樣的承諾並傳遞它作爲第三個參數。 – Undrium