I have a JS-Data object which is nested (i.e. has a parent relation)
(NB all code is coffeescript)
Follow = DS.defineResource
name: "follow"
endpoint: "follows"
relations:
belongsTo:
post:
localField: "post"
localKey: "post_id"
parent: true
actions:
currentUsersFollow:
method: "GET"
pathname: "current_users_follow"
I need to call the custom action, currentUsersFollow
however I don't want to call it on an instance of Follow
. It's a class method like /index
and has no associated instance. However the path still needs to be nested in the parent object.
i.e.
Follow.currentUsersFollow({post_id: 213423})
# => http://ourapp.com/api/v1/follows/current_users_follow
#
# I would like this to generate:
# http://ourapp.com/api/v1/posts/213423/follows/current_users_follow
#
# i.e. it's missing the nesting: /posts/213423
.findAll
Now if you did this with .findAll()
then it will generate the nested route as long as you pass the relevant parent id:
Follow.findAll({post_id: 213423})
# => http://ourapp.com/api/posts/213423/follows
As you can see the post is correctly specified and it goes to the generic endpoint.
So in short, I would like to create a custom action for my JS-Data resource which is nested within a parent but is not being called on an instance of the child.
Is this possible?
Define your action:
actions: {
currentUsersFollow: {
method: 'GET',
endpoint: 'posts',
pathname: 'current_users_follow'
}
}
Then call it like this:
Follow.currentUsersFollow(213423)
and it should produce
GET /posts/213423/current_users_follow