when
method (8f08c8f), closes #219where
and whereIn
methods (d77b365), closes #205custom
(#173) (eef91b1), closes #172typeof
instead of constructor
for checks (644ab4e)qs
(80a7636)include
, append
and orderBy
(#148) (0d7ac00)with
, all
and $all
(#147) (db39511)for
error message (fbd2bca)isValidId
(#115) (279f9dc) (@guirociozanini)See https://robsontenorio.github.io/vue-api-query/
Apply instances of relationships to nested objects. 10/9/2020Thanks @JoaoPedroAS51 !
You can also apply a model instance to a nested object by setting the key and the model in relations
method.
If the backend responds with:
// response from API for /posts/1
{
title: 'My title'
body: 'Some text here',
user: {
firstName: 'John',
lastName: 'Doe'
}
}
We just need to set user
to User model:
/models/Post.js
class Post extends Model {
relations () {
return {
// Apply User model to `user` object
user: User
}
}
}
It also works for collections. So if the backend responds with:
// response from API for /comments
{
text: 'Some text here',
user: {
firstName: 'John',
lastName: 'Doe'
},
replies: [
{
text: 'A reply here',
user: {
firstName: 'Joe',
lastName: 'Doe'
}
},
{
text: 'Another reply here',
user: {
firstName: 'Mary',
lastName: 'Doe'
},
replies: [
{
text: 'Yes, this is the reply of the reply!',
user: {
firstName: 'Max',
lastName: 'Doe'
}
}
]
}
]
}
Then we just need to set user
to User model and replies
to Comment model:
/models/Comment.js
class Comment extends Model {
relations () {
return {
// Apply User model to `user` object
user: User,
// Apply Comment model to each object of `replies` array
replies: Comment
}
}
}
Fixes 5/15/2020
save()
method makes a PUT
request to the correct URL on nested object thas was fetched with find()
method @taaiThanks to @Peter-Krebs for reviewing.
Fix for $find to use a constructor on the result 5/2/2019Thanks @rossity for #67
Add 'fetch' based methods: $first() and $find() 4/18/2019Thanks @leeovery for #61.
Introduces new fetch style request for find()
and first()
methods. See README for more info.
let user = await User.$find(1)
let user = await User.$first()
Fix custom resources baseURL() 2/27/2019
Thanks @peterquentin
The `custom()` method takes multiples parameters 2/24/2019Thanks @Peter-Krebs
The custom()
method can be called with multiple arguments to build resource endpoints and hierarchies. Simply supply them in the correct order. Any combination of strings and models is possible.
let user = new User({ id: 1 })
let post = new Post()
// GET /users/1/posts/latest
const result = await Post.custom(user, post, 'latest').get()
Improvements and fixes 2/18/2019 Update dependencies
Updated to latest babel and eslint features.
Added ability to customize query parameter namesIf you need to change default values just override parametersName() on your Base Model. So, the generated query string will use this new values.
import { Model as BaseModel } from 'vue-api-query'
export default class Model extends BaseModel {
parameterNames () {
return {
include: 'include_custom',
filter: 'filter_custom',
sort: 'sort_custom',
fields: 'fields_custom',
append: 'append_custom',
page: 'page_custom',
limit: 'limit_custom'
}
}
}
Thanks @suth https://github.com/robsontenorio/vue-api-query/pull/42
Fix array strategy validation for SSRGot error on using vue-api-query with NUXT on universal mode (SSR)
Thanks @MisterEffix https://github.com/robsontenorio/vue-api-query/pull/43
The `for()` method can take multiple objects to build hierarchy levels. 11/22/2018 let user = new User({id: 1})
let post = await user.posts().first()
// Related objects go in order of their appearance in the URL.
let comment = new Comment({text: 'for() takes multiple objects.'}).for(user, post)
// POST /users/1/posts/1/comments
await comment.save()
.for() should use object.getPrimaryKey() 10/31/2018 find() method for nested resources 7/26/2018
If you need to get a nested resource, without getting the parent model at first, you can do something like this.
// GET /users/1/posts
let User = new User({id: 1})
let Post = await User.posts().get()
// GET /users/1/posts/2
let User = new User({id: 1})
let Post = await User.posts().find(2)
Stable release and for() method 7/16/2018
for()
method for creating new related objectsCreating new related objects is easy. Just use the for() method, passing the related object.
let post = new Post({title: 'Woo!'})
// POST /posts
await post.save()
let comment = new Comment({text: 'New one for this post'}).for(post)
// POST /posts/1/comments
await comment.save()
Custom params 6/5/2018
If you need to pass any extra param not provided by vue-api-query
pattern, just use the params()
method while querying:
// GET /users?doSomething=yes&process=no
let users = await User
.params({
doSomething: 'yes',
process: 'no'
})
.get()
Of course you can chain it with other methods, including on relationships.
// GET /posts/1/comments?include=user&blah=123
let comments = await post
.comments()
.include('user')
.params({blah: 123})
.get()
Add `primaryKey()` method. 5/16/2018
In case your model does not work with default primary key ('id').
0.5.0 4/11/2018Support PUT, POST, DELETE for nested relationships
0.4.1 4/6/2018Fix internal variable name
0.4.0 4/5/2018Add select()
for sparse fields
Remove find()
restriction for integers
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4