在 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 错误(或两者兼而有之)。
我遇到了同样的麻烦,我的问题是我像这样发送查询的变量:
{var1: 'val1', var2: 'val2'}
而不是
{data: {var1: 'val1', var2: 'val2'}}