Package Exports
- loopback-include-through-mixin
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (loopback-include-through-mixin) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
loopback-include-through-mixin
##Features
- include though model properties with queries
- setup default bahavior
- use as mixin
##Installation
npm install loopback-include-through-mixin --save##How to use
Add the mixins property to your server/model-config.json like the following:
{
"_meta": {
"sources": [
"loopback/common/models",
"loopback/server/models",
"../common/models",
"./models"
],
"mixins": [
"loopback/common/mixins",
"../node_modules/loopback-include-through-mixin",
"../common/mixins"
]
}
}
To use with your Models add the mixins attribute to the definition object of your model config.
{
"name": "app",
"properties": {
"name": {
"type": "string",
}
},
"relations": {
"users": {
"type": "hasMany",
"model": "user",
"foreignKey": "appId",
"through": "userRole"
}
},
"mixins": {
"IncludeThrough": true,
}
}Then use in you queries like:
{
where: ...
include: ...
includeThrough: true
}{
where: ...
include: ...
includeThrough: {
fields: 'type'
}
}You can also set default behavior in your model definition with options.
{
"name": "app",
"properties": {
"name": {
"type": "string",
}
},
"relations": {
"users": {
"type": "hasMany",
"model": "user",
"foreignKey": "appId",
"through": "userRole"
}
},
"mixins": {
"IncludeThrough": {
"relations": [
"users"
],
"fields": {
"users": "type"
}
},
}
}Example of Through Model:
{
"name": "userRole",
"properties": {
"type": {
"type": "string",
"required": true,
"default": "owner",
"description": "owner | administrator | collaborator"
}
},
"validations": [],
"relations": {
"app": {
"type": "belongsTo",
"model": "app",
"foreignKey": "appId"
},
"user": {
"type": "belongsTo",
"model": "user",
"foreignKey": "userId"
}
}
}##Options
| option | type | description | required |
|---|---|---|---|
| relations | [String] | select relations | false |
| fields | Key/Value Object | similar to filter fields. Key: relation; Value: fields filter. | false |
- By setting relations in model definition it will return the though model for the specified relations by default
- By passing includeThrough in you query filter it will override default fields