0.3.3 • Published 8 years ago

loopback-component-remote-ctx v0.3.3

Weekly downloads
101
License
MIT
Repository
github
Last release
8 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

8 years ago

0.3.2

9 years ago

0.3.1

9 years ago

0.3.0

9 years ago

0.2.4

10 years ago

0.2.3

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago