如何在JS-Data资源上创建嵌套的自定义类操作?

时间:2016-09-08 16:56:27

标签: javascript jsdata

我有一个嵌套的JS-Data对象(即具有父关系)

(NB所有代码均为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"

我需要调用自定义操作currentUsersFollow但是我不想在Follow的实例上调用它。它是类/index之类的类方法,没有关联的实例。但是,路径仍然需要嵌套在父对象中。

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

可以实现这一点

现在,如果您使用.findAll()执行此操作,那么只要您传递相关的父ID,它就会生成嵌套路由:

Follow.findAll({post_id: 213423})
# => http://ourapp.com/api/posts/213423/follows

正如您所看到的那样,正确指定了帖子并将其发送到通用端点。

如何在没有实例的情况下创建自定义嵌套操作?

简而言之,我想为我的JS-Data资源创建一个自定义操作,该操作嵌套在父级中,但不在子级实例上调用。

这可能吗?

1 个答案:

答案 0 :(得分:1)

定义你的行动:

actions: {
  currentUsersFollow: {
    method: 'GET',
    endpoint: 'posts',
    pathname: 'current_users_follow'
  }
}

然后这样称呼:

Follow.currentUsersFollow(213423)

它应该产生

GET /posts/213423/current_users_follow