我有两个LoopBack模型,A和B.他们的部分代码是这样的:
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 / API进行REST调用时,B的访问观察挂钩具有accessToken。
但是,在进行API POST A / API调用时,A的beforeRemote挂钩创建尝试调用B.findById,后者又触发B的访问观察挂钩,但在这种情况下,没有accessToken;甚至没有选择。
如何将访问信息从A传播到B?
答案 0 :(得分:1)
您在options参数中传递它。如下所述,如果您正在做自定义操作,请确保自己设置或设置options.accessToken。 findById等已经有了提供options-object的机制。
https://loopback.io/doc/en/lb3/Using-current-context.html
在“options”参数中传递任何其他上下文。内建的 方法,如PersistedModel.find或PersistedModel.create已经 接受此参数,必须修改自定义用户方法才能接受 它也是。
每当方法调用另一个方法时,“options”参数必须 传递给调用链。
通过REST调用方法时播种“options”参数 call,“选项”参数必须在远程处理元数据中注释 在“http”属性中设置特定值。
可选地,应用程序可以自定义提供给“选项”的值 通过REST调用时。