调用方法观察者

时间:2017-04-11 17:05:44

标签: node.js loopbackjs loopback

我有两个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?

1 个答案:

答案 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调用时。