为什么GitHub APIv4(GraphQL API)中的所有接口都具有id字段?

时间:2018-07-14 07:50:46

标签: github graphql github-api graphql-js

我最近开始使用GraphQL,并且GitHub API似乎是学习良好实现实践的好地方,但是有些我不了解:

github接口是这样实现的: 有一个Node接口,该接口有一个globalIdField,如果所有实体都实现了该接口并具有一个id字段,则该接口很好,但是所有其他接口也都有一个id字段,因此,当type对象实现Node和另一个接口时,它从两个接口获取其id字段,而我不理解此实现背后的原因。

感谢任何好的详细解释

1 个答案:

答案 0 :(得分:3)

这就是JavaScript的工作方式。您可以重新分配函数参数的值,但这不会更改传递函数的值。

function makeTrue (value) {
  value = true
  console.log(value) // true
}

var myVariable = false
makeTrue(myVariable)
console.log(myVariable) // false

如果传递给函数的值是对象或数组,则可以对其进行变异,并且原始值也将发生变异,因为Javascript中的对象和数组是通过引用传递的。

function makeItTrue (value) {
  value.it = true
  console.log(value.it) // true
}

var myVariable = { it: false }
makeTrue(myVariable)
console.log(myVariable.it) // true

换句话说,您需要更改context参数,而不是重新分配它。