Select 按给定变量
Select by given variable
我的 mongo 数据库数据:
{
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 });
},
我的问题是如何通过给定变量获取用户?
所以当我输入时它应该 return 用户:
getUser(id: "xsxsxsxsxss", username:"gemmi") { username _id }
还有当我输入时:
getUser(username:"gemmi") { username _id }
我建议您为查询添加输入类型。并让 meteor 搜索相应的用户。
它可能看起来像这样:
查询:
`
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);
}
...
您可以将 Query
中的 id
替换为 _id
{
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
方法调用中的查询查找。
我的 mongo 数据库数据:
{
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 });
},
我的问题是如何通过给定变量获取用户?
所以当我输入时它应该 return 用户:
getUser(id: "xsxsxsxsxss", username:"gemmi") { username _id }
还有当我输入时:
getUser(username:"gemmi") { username _id }
我建议您为查询添加输入类型。并让 meteor 搜索相应的用户。
它可能看起来像这样:
查询:
`
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);
}
...
您可以将 Query
id
替换为 _id
{
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
方法调用中的查询查找。