0.3.3 • Published 6 years ago

loopback-component-remote-ctx v0.3.3

Weekly downloads
101
License
MIT
Repository
github
Last release
6 years ago

Loopback Component Remote context

This loopback component enables you to add the remote context to the specified remote methods of the loopback application.

Note: this hack would add a new argument to the remote method.

Installation

  1. Require: loopback 2.37.0 or newer
  2. Install in you loopback project:

    npm install --save loopback-component-remote-ctx

  3. Create a component-config.json file in your server folder (if you don't already have one)

  4. Configure options inside component-config.json:

    {
      "loopback-component-remote-ctx": {
        "enabled": true,
        "whiteList": ["YourModel", "OrYourModel.remoteMethod"],
        "blackList": ["YourModel", "OrYourModel.remoteMethod"],
        "argName": "remoteCtx"
      }
    }
  • enabled Boolean: whether enable this component. defaults: true
  • whiteList Array of String : Only add the remote context to these methods
  • blackList Array of String : Don't add the remote context to these methods.
  • argName String: the new argument name added to remote method. defaults: remoteCtx

Note: the options argument of remote method is always be inject. DO NOT USE options as the argument name.

Usage

You should enable the model-level setting injectOptionsFromRemoteContext if you use the loopback v2.x

// common/models/customer.json
{
  "name": "Customer",
  "base": "User",
  "injectOptionsFromRemoteContext": true,
  "properties": {
    // ...
  }
}

And you can NEVER USE the options name. Check your remote method arguments before used it.

Model.observe('access', function(ctx, next){
  console.log(ctx.options.remoteCtx) //the remoteCtx
})

Model.beforeRemote('*', function(ctx, next){
  Model.findById('id', null, ctx, function(err, result){
    if (err) return next(err);
    next(result);
  })
})

Model.yourRemoteMethod = function(msg, ctx){
  //if your write this before injected via the component:
  return Model.findById('id', null, ctx)
  //else should be this, your controller::
  // return Model.findById('id', null, ctx)
}

Model.remoteMethod(
  'yourRemoteMethod',
  {
    accepts: [
      {arg: 'msg', type: String},
      {arg: 'options', type: Object, http:'optionsFromRequest' }
    ],
    returns: {arg: 'greeting', type: 'string'}
  }
);

History

  • v0.3.0 (loopback >=2.37.0)
    • use the optionsFromRequest object.
  • v0.2.0
    • broken: put the remote context to the options.remoteCtx instead of options.
    • bug the original options of the model method is lost.

Refs

0.3.3

6 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.4

7 years ago

0.2.3

7 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago