javascript - 如何检查连接在中继中是否有新项目?

标签 javascript relayjs relay

我的 Feed 组件中有以下中继容器,它是一个简单的帖子列表

export default Relay.createContainer(Feed, {
  initialVariables: {
    count: 5,
  },
  fragments: {
    viewer: () => Relay.QL`
      fragment on Viewer {
        posts(first: $count) {
          pageInfo {
              hasNextPage
          }
          edges {
            node {
              id,
              body
            },
          },
        },
      },
    `,
  },
});

这些帖子是按最新帖子组织的,我如何检查我的 graphql 服务器中是否有较新的帖子?我想要执行拉动策略,直到将其迁移到 graphql/relay 订阅

我可以使用forceFetch吗?我不想更新 Relay Store,我只是想通知有新帖子的用户

最佳答案

我能想到的一种方法是拥有一个提供最新时间戳的端点。例如,此端点返回较新帖子的 ID。在中继端,您执行 setTimeout(() => { this.props.relay.setVariables({timestamp: timestamp}); }, 60000) 在片段中类似:

const FooBar = Relay.createContainer(FooBarClass, {
initialVariables: {
    timestamp: null
},
prepareVariables: vars => {
    vars['timestampIsTruthy'] = !!vars['timestamp'];
    return vars;
},
fragments: {
    store: () => Relay.QL`
        fragment on Query {
            newerPosts(timestamp: $timestamp, first: 3) @include(if: $queryIsTruthy) {
                totalCount
                edges {
                    node {
                        id
                    }
                }
            }
        }`,
},
});

关于javascript - 如何检查连接在中继中是否有新项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39919554/

相关文章:

c# - 如何链接 "GraphQL for .NET"和 "Relay"中的模式?

javascript - Relay/GraphQL 'resolve' 是如何工作的?

javascript - 将状态传递给 Relay 中的 getVaribles 突变

javascript - 查询组合如何在 Relay 中的容器和路由之间工作?

Javascript,如果条件在没有 && 逻辑运算符的情况下工作,当 && 存在时它不起作用

reactjs - 如何同步Redux和Relay?

reactjs - React/Relay Modern/GraphQL 简单项目设置与 Babel 问题

javascript - 销售队伍 : Redirecting the URL to Salesforce

javascript - 如何使用javascript将iframe高度设置为100%

javascript - Dojo 构建 css 和自定义 javascript