Как вы можете создать вложенное, настраиваемое действие класса на ресурсе JS-Data?

У меня есть объект JS-Data, который является вложенным (т.е. имеет родительское отношение)

(NB весь код написан на кофе)

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() тогда он будет генерировать вложенный маршрут, если вы передадите соответствующий родительский идентификатор:

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

Как видите, сообщение правильно указано и отправляется в общую конечную точку.

Как вы можете создать собственное вложенное действие без экземпляра?

Короче говоря, я хотел бы создать настраиваемое действие для моего ресурса JS-Data, который вложен в родительский объект, но не вызывается для экземпляра дочернего элемента.

Это возможно?

1 ответ

Решение

Определите свое действие:

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

Тогда назовите это так:

Follow.currentUsersFollow(213423)

и это должно произвести

GET /posts/213423/current_users_follow
Другие вопросы по тегам