KeystoneJS 中的 GraphQL 突变:“无法使用 'in' 运算符在未定义中搜索 'id'”

问题描述 投票:0回答:1

在 KeystoneJS GraphQL 项目中,我尝试在另一个现有数据对象(“提案”)的“resolveInput”挂钩中创建一个新的数据对象(“文章”)——当提案获得批准时,我创建基于该提案数据的文章)。

使用 Mongoose 适配器效果很好,但我尝试使用内置的 GraphQL API 来实现,使用

keystone.executeQuery
并收到以下错误:

我的文章列表与一项提案有关系(我忽略了其他字段)

fields: {
  proposal: {
                isUnique: false,
                type: fields_1.Relationship,
                ref: 'Proposal',
                access: {
                    create: true,
                    read: true,
                    update: false
                }
            }

}

我因此创建了新文章(我省略了一些代码)

hooks: {
    resolvedInput: async params => {
        const articleCreateInput = {
                                title: cleanTitle,
                                text: cleanText,
                                visible: HIDDEN,
                                proposal: {
                                    connect: {
                                        id: proposalId
                                    }
                                }
                            };
                            const articleCreationResult = await keystone.executeQuery(createArticle, { variables: articleCreateInput });

  }
}

据我所知,这是正确的方法,使用 connect,将现有项目连接到您正在创建的项目。

我的查询是

const createArticle = `mutation createArticle($data:ArticleCreateInput) {
  createArticle(data:$data) {
    id
    title
    visible
    publishDate
  }
} `;

据我所知,我正确遵循了架构

我确信我犯了一个明显的错误,但目前我还没有看到它——而且我不确定这个错误是 GraphQL 错误还是 KeystoneJS 错误(或两者兼而有之)。

graphql apollo apollo-server keystonejs
1个回答
0
投票

我遇到了同样的麻烦,我的问题是我像这样发送查询的变量:

{var1: 'val1', var2: 'val2'}

而不是

{data: {var1: 'val1', var2: 'val2'}}

© www.soinside.com 2019 - 2024. All rights reserved.