[英]Unknown argument “record” on field of type “Mutation” (graphql-compose)
我對如何在graphql-compose中正確創建解析器感到困惑:我有兩個相關的實體:EntityGroup和Entity。 我想每一個entityGroup創建時間創建一個默認的實體:所以我需要調用EntityGroup.createOne的解決方法,然后使用該結果的ID叫“Entity.createOne”
這是我到目前為止編寫的代碼:
import { composeWithMongoose } from 'graphql-compose-mongoose';
import { schemaComposer } from 'graphql-compose';
import {Resolver} from 'graphql-compose'
const customizationOptions = {}; // left it empty for simplicity, described below
const EntityTC = composeWithMongoose(Entity, customizationOptions)
const EntityGroupTC = composeWithMongoose(EntityGroup, customizationOptions)
const entityGroupCreate = new Resolver({
name: 'entityGroupCreate',
type: EntityGroupTC,
args: {
name: 'String!',
},
resolve: async ({ source, args, context, info }) => {
const created = await EntityGroupTC.getResolver('createOne').resolve({ source, args, context, info })
console.log("created entity : ", created)
return created
}
});
schemaComposer.rootMutation().addFields({
entityGroupCreate,
}
現在,從客戶端,我調用了與原始情況相同的代碼,其中EntityGroupCreate使用了預先存在的解析器:
schemaComposer.rootMutation().addFields({
entityGroupCreate: EntityGroupTC.getResolver('createOne'),
}
我的問題是,對於預定義的解析器來說一切正常,但是在上面描述的解析器中,出現了此錯誤:
graphQl錯誤:類型為“ Mutation”的字段“ entityGroupCreate”上的未知參數“ record”。 graphQl錯誤:無法查詢類型“ EntityGroup”上的字段“ recordId”。 graphQl錯誤:無法查詢“ EntityGroup”類型的字段“ record”。 graphQl錯誤:類型為“字符串!”的字段“ entityGroupCreate”參數“名稱” 是必需的,但未提供。
這是我的查詢
const ADD_COMPLAINT = gql`mutation complaintCreate($entityId:String!, $title: String!, $desc: String!)
{
complaintCreate(record:{entityId:$entityId, title:$title, desc:$desc}){
recordId,
record{
_id,
entityId,
user {
userId,
userName,
roleInShop
},
title,
desc,
createdAt,
updatedAt
}
}
}`
現在我知道突變模式是錯誤的,但是我真的不知道從哪里開始,因為該模式是由graphql-compose-mongoose構造的,我可以簡單地將其命名為resolver的type字段: type: EntityGroupTC
我試圖重新定義注釋中指定的響應格式:
const outputType = EntityGroupTC.constructor.schemaComposer.getOrCreateTC("entityGroupCreate", t => {
t.addFields({
recordId: {
type: 'MongoID',
description: 'Created document ID',
},
record: {
type: EntityGroupTC,
description: 'Created document',
},
});
});
但我仍然有這些錯誤
graphQl錯誤:類型為“ Mutation”的字段“ entityGroupCreate”上的未知參數“ record”。 graphQl錯誤:類型為“字符串!”的字段“ entityGroupCreate”參數“名稱” 是必需的,但未提供。
所以我必須了解這部分是如何工作的: https : //github.com/graphql-compose/graphql-compose-mongoose/blob/master/src/resolvers/createOne.js : 42
args: {
...recordHelperArgs(tc, {
recordTypeName: `CreateOne${tc.getTypeName()}Input`,
removeFields: ['id', '_id'],
isRequired: true,
...(opts && opts.record),
}),
},
在我看來,對於一個應該編寫較少接線代碼的庫來說,這注定會變得復雜:我敢肯定我做錯了方法...
最好的祝福,
好的,解決方案就在我眼前:/,這是一天結束syndrom
const createOneResolver = EntityGroupTC.getResolver('createOne')
const entityGroupCreate = new Resolver({
name: 'entityGroupCreate',
type: createOneResolver.type,
args: createOneResolver.args,
resolve: async ({ source, args, context, info }) => {
const created = await createOneResolver.resolve({ source, args, context, info })
console.log("created entity : ", created)
return created
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.