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.
- Require: loopback 2.37.0 or newer
- Install in you loopback project:
npm install --save loopback-component-remote-ctx
-
Create a component-config.json file in your server folder (if you don't already have one)
-
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: truewhiteList
[Array of String] : Only add the remote context to these methodsblackList
[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.
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'}
}
);
- v0.3.0 (loopback >=2.37.0)
- use the
optionsFromRequest
object.
- use the
- 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.