-1

我的 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 });
},

我的问题是如何通过给定变量获取用户?

所以当我输入时它应该返回用户:

getUser(id: "xsxsxsxsxss", username:"gemmi") { username _id }

以及当我键入时:

getUser(username:"gemmi") { username _id }
4

2 回答 2

1

您可以id_idQuery

{
    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方法调用中的查询查找。

于 2017-03-10T09:32:08.673 回答
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);
}

...

于 2017-03-10T07:22:29.540 回答