我的mongo db数据:
{
username: 'gemmi',
age: 14,
id: 'xsxsxsxsxss'
}
输入查询:
{
type Query {
getUser(id: String, username: String): User
}
}
分解器
getUser(root, args) {
return Meteor.users.findOne({ _id: args.id, username: args.username });
},
我的问题是如何通过给定变量获取用户?
所以当我输入时它应该返回用户:
getUser(id: "xsxsxsxsxss", username:"gemmi") { username _id }
以及我输入时:
getUser(username:"gemmi") { username _id }
答案 0 :(得分:1)
您可以将id
替换为_id
Query
{
type Query {
getUser(_id: String, username: String): User
}
}
然后您只需使用args
参数即可执行findOne
调用
getUser(root, args) {
return Meteor.users.findOne(args);
}
args
对象取决于您执行query
调用的方式。您应该记住在通话中用id
替换_id
。在第一种情况下,当您执行getUser(_id: "xsxsxsxsxss", username:"gemmi")
时,args
对象为{ _id: 'xsxsxsxsxss', username: 'gemmi' }
,但在第二种情况下,当您要使用getUser(username:"gemmi")
时,args
对象为{ username: 'gemmi' }
,因此在这两种情况下,您都可以在findOne
方法调用中将其用作查询查找。
答案 1 :(得分:0)
我建议您为查询添加输入类型。让流星搜索相应的用户。
看起来像这样:
查询:
`
type User {
id: ID!
username: String!
}
input UserInput {
id: ID
username: String
}
type Query {
getUser(user: UserInput!): User!
}
`

解析器:
...
getUser(root, { user }) {
return Meteor.users.findOne(user);
}
...