如何在突变后更新apollo缓存(使用过滤器查询)

时间:2018-02-26 10:27:24

标签: graphql apollo vue-apollo

我是GraphQL的新手。我在使用apollo的Vue.js项目中使用graph.cool。

  • 我现在正在使用内存缓存。
  • 我之前有一个简单的'allPosts'查询。
  • 创建新的后,我使用了update()钩子和readQuery()+ writeQuery()

但是我希望登录的用户只能看到他们的帖子。所以我用过滤器修改了查询。

query userStreams ($ownerId: ID!) {
  allStreams(filter: {
   owner: {
     id: $ownerId
   }
  }) {
    id
    name
    url
    progress
    duration
    watched
    owner {
      id
    }
  }
}

我的想法是,我只需要传入userid变量。但这不起作用。我总是得到

Error: Can't find field allStreams({"filter":{"owner":{}}}) on object (ROOT_QUERY) undefined.




this.$apollo.mutate({
      mutation: CREATE_STREAM,
      variables: {
        name,
        url,
        ownerId
      },
      update: (store, { data: { createStream } }) => {
        const data = store.readQuery({
          query: USERSTREAMS,
          variables: {
            id: ownerId
          }
        })
        data.allStreams.push(createStream)
        store.writeQuery({
          query: USER_STREAMS,
          variables: {
            id: ownerId
          },
          data
        })
      }
    })

0 个答案:

没有答案