簡體   English   中英

無法在GraphQL架構中嵌套類型

[英]Unable to nest Types in GraphQL Schema

我很難找到為什么我的PageType在“頁面/頁面”上給出了“PageType未定義”,我想引用它有不同的方式嗎? 我有一種感覺,這可能是一個簡單的忽略如何引用其他類型

const PageType = new GraphQLObjectType({
  name: 'Page',
  fields: {
    _id: { type: new GraphQLNonNull(GraphQLID) },
    title: { type: GraphQLString },
    subtitle: { type: GraphQLString },
    description: { type: GraphQLString },
    page: {
      type: PageType
    }
    pages: {
      type: new GraphQLList(PageType),
    }
  },
});

錯誤(主要是幫助其他人搜索類似的問題):

ReferenceError: PageType is not defined
    at Object.<anonymous> (H:\Coding\Projects\react-starter-kit\build\webpack:\src\data\types\PageType.js:50:1)
    at __webpack_require__ (H:\Coding\Projects\react-starter-kit\build\webpack:\webpack\bootstrap 8ce5b4572987765a465d:19:1)
    at Object.<anonymous> (H:\Coding\Projects\react-starter-kit\build\server.js:731:74)
    at __webpack_require__ (H:\Coding\Projects\react-starter-kit\build\webpack:\webpack\bootstrap 8ce5b4572987765a465d:19:1)
    at Object.<anonymous> (H:\Coding\Projects\react-starter-kit\build\webpack:\src\data\schema.js:1:1)
    at __webpack_require__ (H:\Coding\Projects\react-starter-kit\build\webpack:\webpack\bootstrap 8ce5b4572987765a465d:19:1)
    at Object.<anonymous> (H:\Coding\Projects\react-starter-kit\build\server.js:1098:72)
    at __webpack_require__ (H:\Coding\Projects\react-starter-kit\build\webpack:\webpack\bootstrap 8ce5b4572987765a465d:19:1)
    at Object.<anonymous> (H:\Coding\Projects\react-starter-kit\build\server.js:7455:18)
    at __webpack_require__ (H:\Coding\Projects\react-starter-kit\build\webpack:\webpack\bootstrap 8ce5b4572987765a465d:19:1)
    at H:\Coding\Projects\react-starter-kit\build\webpack:\webpack\bootstrap 8ce5b4572987765a465d:65:1
    at Object.<anonymous> (H:\Coding\Projects\react-starter-kit\build\server.js:71:10)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)

錯誤非常簡單..您在嘗試分配之前嘗試引用PageType。 使用最小示例會出現相同的錯誤:

const foo = {
  innerFoo: foo // error: foo is not defined
}

這就是在這些遞歸情況下使用通常稱為thunks的函數的原因

const foo = {
  innerFoo: () => foo
}

當調用foo.innerFoo()foo已經被定義,這將起作用。 出於這個原因,GraphQL模式支持將字段創建為函數。

const FooType = new GraphQLObjectType({
  name: 'Foo',
  fields: () => ({ // fields is a "thunk"
    foo: {
      type: FooType
    },
    foos: {
      type: new GraphQLList(FooType),
    }
  }),
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM