环回:使用 JavaScript 执行生成的方法

Loopback: Executing a generated method using JavaScript

我想在 JavaScript 中使用生成的方法(特别是 __get__accessTokens),但我不知道如何使用。我可以使用 REST API Explorer 测试此功能(获取用户的令牌)是否正常工作,但我找不到任何示例来说明如何以编程方式访问生成的方法以及它们的签名是什么。我需要的示例(Member 扩展了默认的 User 模型):

models/member.js

 module.exports = function(Member) {
      Member.__get__accessTokens(...)

      // or if I have a specific user (e.g. after executing findById)
      Member.findById(id, function(err, member) {
           member.__get__accessTokens(...)      
      });          
 }

您可以为此使用 afterRemotebeforeRemote 方法。

  module.exports  = function(Member) {
      Member.beforeRemote("__your methods__", function(ctx, inst, next){
        var accessToken = ctx.req.accessToken;
        app.models.Member.findById(accessToken.userId, function(err, usr){
          //Process here....
        }
      next();
     }
    }

您可以使用当前上下文。 https://docs.strongloop.com/display/public/LB/Using+current+context

您可以从上下文中访问它:

module.exports = function(Product) {  
    var app = require('../../server/server')

    Product.afterRemote('create', function( ctx, modelInstance, next) {
        var accessToken = ctx.req.accessToken

        // get Customer (User) by using the user id in token object
        app.models.Customer.findById(accessToken.userId, function(err, user) {
            modelInstance.createdBy = user.username
            next()
        })
    })
}

我使用这部分代码来捕获通过 REST 创建模型的用户名 API。完整的解释可以在 here

中找到