2017-04-11 54 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