首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >您尝试从mongoose模型生成名为"Projects“的GraphQL类型,但此类型已存在于SchemaComposer中

您尝试从mongoose模型生成名为"Projects“的GraphQL类型,但此类型已存在于SchemaComposer中
EN

Stack Overflow用户
提问于 2020-11-06 05:05:01
回答 1查看 113关注 0票数 2

我使用不同的mongodb数据库来存储相同的mongoose模式记录“页面”。正因为如此,我希望有X个graphql端点-每个端点都应该服务于所请求的数据库的“页面”。

示例:localhost:3000/graphql/:database

出于这个原因,我创建了一个从路由(express > request.param.database)获取数据库名称的schemaComposer

代码语言:javascript
运行
复制
import { composeMongoose } from 'graphql-compose-mongoose'
import { SchemaComposer } from 'graphql-compose'
import { Pages } from '../../mongoose/models/PagesModel.js'
import { Projects } from '../../mongoose/models/ProjectsModel.js'

const gqlSchemaComposerBuilder = (database) => {
    const gqlSchemaComposer = new SchemaComposer()

    const ProjectsTC = composeMongoose(Projects, {})
    const PagesTC = composeMongoose(Pages(database), {})

    gqlSchemaComposer.Query.addFields({
        pageMany: PagesTC.mongooseResolvers.findMany(),
        pageOne: PagesTC.mongooseResolvers.findOne(),

        projectMany: ProjectsTC.mongooseResolvers.findMany(),
        projectOne: ProjectsTC.mongooseResolvers.findOne()
    })

    gqlSchemaComposer.Mutation.addFields({
        projectCreateOne: ProjectsTC.mongooseResolvers.createOne(),
        projectUpdateOne: ProjectsTC.mongooseResolvers.updateOne(),
        projectRemoveOne: ProjectsTC.mongooseResolvers.removeOne()
    })

    return gqlSchemaComposer.buildSchema()
}

export default gqlSchemaComposerBuilder

问题是,一旦两个composeMongoose声明都包装在函数中,我就会得到这个错误:

代码语言:javascript
运行
复制
{"errors":[{"message":"You try to generate GraphQL Type with name Projects from mongoose model but this type already exists in SchemaComposer. Please choose another type name \"composeWithMongoose(model, { name: 'NewTypeName' })\", or reuse existed type \"schemaComposer.getOTC('TypeName')\", or remove type from SchemaComposer before calling composeWithMongoose method \"schemaComposer.delete('TypeName')\"."}]}
EN

回答 1

Stack Overflow用户

发布于 2021-03-05 03:09:21

默认情况下,composeMongoose()使用全局schemaComposer,因此需要在componseMongo的选项中传递gqlSchemaComposer

代码语言:javascript
运行
复制
const gqlSchemaComposer = new SchemaComposer()

const ProjectsTC = composeMongoose(Projects, { schemaComposer: gqlSchemaComposer })
const PagesTC = composeMongoose(Pages(database), {schemaComposer: gqlSchemaComposer})
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64705265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档