https://github.com/oscaroox/objection-visibility
Objectionjs plugin to whitelist/blacklist model properties
https://github.com/oscaroox/objection-visibility
blacklist blacklist-properties json objection-orm objection-visibility objectionjs whitelist
Last synced: about 1 month ago
JSON representation
Objectionjs plugin to whitelist/blacklist model properties
- Host: GitHub
- URL: https://github.com/oscaroox/objection-visibility
- Owner: oscaroox
- Created: 2017-06-15T21:27:15.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2023-03-06T06:56:49.000Z (almost 3 years ago)
- Last Synced: 2025-10-28T05:36:12.999Z (4 months ago)
- Topics: blacklist, blacklist-properties, json, objection-orm, objection-visibility, objectionjs, whitelist
- Language: TypeScript
- Size: 545 KB
- Stars: 45
- Watchers: 1
- Forks: 9
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# objection-visibility
This plugin adds the ability to whitelist or blacklists model properties.
## Installation
```bash
npm install objection-visibility
```
## Usage
You can enable this plugin by either setting the static property `hidden` or `visible` to your model.
It is possible to have a model which have both properties defined, note that the `visible` method is called first and the `hidden` method second.
### Blacklist properties
To enable blacklisting on your model add the static property `hidden` on your model and return an array with the fields you want to blacklist.
The listed fields are gone after being serialized to json
```js
const Model = require('objection').Model
const visibilityPlugin = require('objection-visibility').default;
class User extends visibilityPlugin(Model) {
static get hidden() {
return ['hashed_password'];
}
}
```
### Whitelist properties
To enable whitelisting on your model add a static property `visible` on your model and return an array with the fields you want to be whitelisted
The listed fields will be the only properties available after being serialized to json
```js
const Model = require('objection').Model
const visibilityPlugin = require('objection-visibility').default;
class User extends visibilityPlugin(Model) {
static get visible() {
return ['firstName', 'id']
}
}
```
## Using with multiple models
Can be used on a base model and have it readily available on all your models
Models that dont have the static properties `visible` or `hidden` will remain untouched.
```javascript
// base.js
class BaseModel extends visibilityPlugin(Model) {}
// post.js
class Post extends BaseModel {
static get visible () {
return ['description', 'title']
}
}
// user.js
class User extends BaseModel {
static get hidden () {
return ['hashedPassword']
}
}
```