将内容类型导入 Meteor 中的 schema.graphql
Posted
技术标签:
【中文标题】将内容类型导入 Meteor 中的 schema.graphql【英文标题】:Importing content type into schema.graphql in Meteor 【发布时间】:2019-01-14 09:30:36 【问题描述】:我很难将 .graphql 定义/内容类型导入 Meteor 中的另一个 .graphql 文件。 我尝试了诸如Meteor-GraphQl 和著名的GraphQl-Import 之类的软件包,但这些似乎都不起作用。 在我的应用程序中,我有一个 api 文件夹,其中包含我的所有定义:
-api
--Animal
---animal.graphql
--Dog
---dog.graphql
---resolvers.js
---dog.js
---dogForm.js
在 animal.graphql 中,我有以下内容:
enum A
hunted
hunter
scalar Date
interface Animal
_id: String!
name: String
group: A!
createdAt: Date
在 dog.graphql 中,我有以下内容:
#import Animal "../Animals/Animal.graphql"
type Dog implements Animal
_id: String!
name: String!
group: A!
ayes: Int!
createdAt: Date
type Query
dog: [Dog]
type Mutation
createDog(
name: String!
group: A!
ayes: Int!
createdAt: Date
): Dog
如果我在 dogForm.js 中导入并记录狗模式:
import DogSchema from "../Dog/Dog.graphql";
console.log("Dog Schema: ", DogSchema);
我发现未导入 Animal 架构,并收到错误消息:
Type "Animal" not found in document.
Here 是一个代码框示例。 那么在 .graphql 文件中导入内容类型和类型定义的最佳方式是什么?
【问题讨论】:
【参考方案1】:我通过简单地导入 SDL 文件并在需要时将它们连接起来解决了我的问题。实际上,如果 Animal 模式已经编译(makeExecutableSchema),则可以使用 type Dog implements Animal ...
而无需导入 Animal #import Animal "../Animals/Animal.graphql"
。所以我最终使用glob、path 和fs
编写了一个函数,它会自动导入我所有的.graphql 文件和解析器并使其可执行。当使用多个 SDL 时,我只需 import
他们并连接字符串。
import AnimalSchema "../Animal/animal.graphql";
import DogSchema from "../Dog/Dog.graphql";
let contatSchema = AnimalSchema + DogSchema;
【讨论】:
【参考方案2】:这应该可行:
meteor add swydo:graphql
在dog.graphql
:
#import "../Animal/animal.graphql"
type Dog implements Animal
...
【讨论】:
我已经这样做了,但我总是得到:未捕获的错误:在文档中找不到类型“动物”。 也许可以在他们的 Github 上发布一个小副本?以上是关于将内容类型导入 Meteor 中的 schema.graphql的主要内容,如果未能解决你的问题,请参考以下文章