我的阿波罗graphql订阅用例是否得到保证?

时间:2020-08-05 06:47:21

标签: graphql apollo

前言:

我正在一个教育网站上工作。每当学生在课程中填写测验时,我们都会执行submitQuiz变异。解析为具有给定等级的更新后的Quiz。最重要的是,提交测验还可以更新课程中学生的progress和课程中的整体progress。因此,submitQuiz突变也可以解析为LessonCourse,其中更新了progress

示例架构摘录:

type SubmitQuizResult: {
    Quiz: Quiz!
    Lesson: Lesson!
    Course: Course!
}

type Mutation {
    submitQuiz(quizId: Int!, answers: String!): SubmitQuizResult!
}

我怎么称呼突变:

mutation SubmitQuiz($quizId: Int!, $answers: String!) {
    submitQuiz(quizId: $quizId, answers: $answers) {
        Quiz { id answers grade }
        Lesson { id progress }
        Course { id progress }
    }
}

问题

现在,我们要添加一项新功能-计算在我们网站上花费的时间。计时器会在用户执行任何操作(包括检查和锻炼,完成阅读课程或提交测验 )时更新。

可能的解决方案:

  • 更新所有突变的代码,以解决我们在现场花费的时间计时器
  • 更新所有变异调用的代码,以包含一个refetchQueries参数,该参数将重新获取当前计时器
  • 使用订阅将计时器更新随时推送到浏览器

问题:

文档说[1]:

在大多数情况下,您的客户不应使用订阅来 保持最新与您的后端。相反,您应该轮询 间歇性查询,或在需要时重新执行查询 用户执行相关操作。

何时应该使用订阅?我的情况是否值得使用?


[1] https://www.apollographql.com/docs/react/data/subscriptions/#when-to-use-subscriptions

0 个答案:

没有答案