@team-decorate/alcjs
v1.3.0
Published
### Installation
Downloads
92
Readme
alcjs
Installation
With npm:
npm install @team-decorate/alcjs
Usage
Model create
import {Model, ArrayMappable} from '@team-decorate/alcjs'
import Post from './models/Post'
import Comment from './models/Comment'
/*
* Only those added to fillable will be sent
*/
const FILLABLE = [
'id', 'name', 'email', 'password', 'type'
]
class User extends Model {
constructor(data) {
super()
this.fillable = FILLABLE
//presents is send even if the field is empty
this.presents = ['type']
this.id = 0
this.name = ''
this.email = ''
this.password = ''
this.type = 0
this.posts = []
this.userComments = []
this.arrayMap(
new ArrayMappable(Post),
new ArrayMappable(Comment).bind('userComments')
)
this.data = data
}
}
How to use
#user api json response
{
"id": 1,
"name": "test-user",
"email": "[email protected]",
"type": 1,
"posts": [
{"id": 1, "text": "test post 1"},
{"id": 2, "text": "test post 2"}
],
"user_comments": [
{"id": 1, "text": "test comment 1"},
{"id": 2, "text": "test comment 2"}
]
}
export default {
methods: {
async get() {
const { data } = await axios.get('/api/user')
this.user = new User(data)
for post in this.user.posts {
console.log(post.text)
console.log(post instanceof Post)// true
}
for comment in this.user.userComments {
console.log(comment instanceof Comment)// true
}
},
async post() {
/*
* What is added to fillable and contains value is sent
*/
const {data} = await this.user.post('/api/user')
this.user.update(data)
}
}
}
Overridable Property
| methods |value |description| |--|--|--| | beforePostable | null | Called before sending api | afterPostable | res | Called after sending api
Model Methods
|methods|args | output| |--|--|--| | getPostable |null | Object| |update|Object|null| |post|String|Promise |delete|String|Promise |patch|String|Promise