0.3.3 • Published 6 years ago
loopback-component-remote-ctx v0.3.3
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
- 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.
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.
- 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.