如何在解析器中编写私有函数(查询或变异)?

时间:2019-08-13 12:07:28

标签: node.js graphql apollo-server

我使用apollo服务器和graphql开发后端。我不知道如何在解析器中编写私有函数,“私有”意味着它不能由前端调用,只能由解析器中的其他函数调用。理想情况下,我希望此函数可以在Query中或突变。

Mutation {
    addFlowHistroy(id: ID!): FlowHistory
    changeFlowStatus(ied: ID!) FlowLog
}

我希望addFlowHistroy可以呼叫changeFlowStatus,并且不要暴露在前端。我该怎么办?谢谢。

1 个答案:

答案 0 :(得分:0)

没有一种机制可以在另一个内部调用解析器,因此永远不需要这样做。如果您在解析器之间共享某些逻辑,则可以将其提取到其自己的函数中,然后直接在每个解析器内部调用该函数-如果您的架构不打算使用它,则无需在架构中添加字段客户。

const typeDefs = gql`
  type Query {
    four: Int!
    nine: Int!
  }
`

const resolvers = {
  Query: {
    foo: () => square(2),
    bar: () => square(3),
  },
}

function square(x) {
  return x * x
}

如果共享逻辑表示业务逻辑,则它可能应该存在于域模型或服务中。然后,您的解析器只需在该模型或服务上调用适当的方法即可。