出现错误:“Query”类型的“user”字段上的未知参数“id”[GraphQL,Relay,React]
Posted
技术标签:
【中文标题】出现错误:“Query”类型的“user”字段上的未知参数“id”[GraphQL,Relay,React]【英文标题】:Getting error : Unknown argument "id" on field "user" of type "Query" [GraphQL, Relay, React] 【发布时间】:2016-03-13 08:19:07 【问题描述】:我们正在中继中形成一个查询。我们的用户数据库设置如下:
function User(id, name, des)
this.id = id.toString()
this.name = name
this.des = des
var users = [new User(1, 'abc', 'Hello abc'), new User(2, 'xyz', 'Hello xyz')]
module.exports =
User: User,
getAnonymousUser: function() return users[0]
我们的schema.js文件如下:
var nodeDefinitions = GraphQLRelay.nodeDefinitions(function(globalId)
var idInfo = GraphQLRelay.fromGlobalId(globalId)
if (idInfo.type == 'User')
return db.getUser(idInfo.id)
return null
)
var userType = new GraphQL.GraphQLObjectType(
name: 'User',
description: 'A person who uses our app',
isTypeOf: function(obj) return obj instanceof db.User ,
fields: function()
return
id: GraphQLRelay.globalIdField('User'),
des:
type: GraphQL.GraphQLString,
description: 'The des of the user',
,
name:
type: GraphQL.GraphQLString,
description: 'The name of the user',
,
interfaces: [nodeDefinitions.nodeInterface],
)
module.exports = new GraphQL.GraphQLSchema(
query: new GraphQL.GraphQLObjectType(
name: 'Query',
fields:
node: nodeDefinitions.nodeField,
user:
type: userType,
resolve: function() return db.getAnonymousUser() ,
,
,
),
)
我们已经创建了我们的中继容器:
exports.Container = Relay.createContainer(App,
fragments:
user: () => Relay.QL`
fragment on User
name
`,
,
)
exports.queries =
name: 'AppQueries',
params:
userID: '1',
,
queries:
//user: () => Relay.QL`query user `,
user: () => Relay.QL `query user(id: $userID) `
,
但我们无法通过 userId 获取用户,并在运行 npm run build 命令时出现以下错误:
错误:“查询”类型的字段“用户”上的未知参数“id”。 文件:App.js 资源: >
查询应用程序用户(id:$userID) ^^^
-----------enter code here
有人可以帮助我们解决这个问题吗?
【问题讨论】:
【参考方案1】:您的架构没有为用户字段定义任何参数:
user:
type: userType,
resolve: function() return db.getAnonymousUser() ,
,
要按 ID 获取用户,请定义 id
参数,然后按该 ID 获取用户:
user:
args:
id: type: GraphQLString
,
resolve: function(root, args)
return db.findUserById(args.id); // you don't have this method but it's an example of how to use the arg
【讨论】:
感谢您的回复,但我们收到了新的错误,如下面的新帖子中所述...以上是关于出现错误:“Query”类型的“user”字段上的未知参数“id”[GraphQL,Relay,React]的主要内容,如果未能解决你的问题,请参考以下文章
带有快速错误的 GraphQL:Query.example 字段类型必须是输出类型,但得到:[object Object]
即使数据存在,`User` 类型的字段也会为 Query 返回 `null`
PostgreSQL:十进制/数字数据类型上的数字字段溢出 - 为啥会出现此错误
Angular Apollo:错误:GraphQL 错误:“Mutation”类型的字段“AuthLogin”上的未知参数“用户名”