如何在GraphQL中通过userName获取用户?

时间:2018-11-02 00:29:01

标签: graphql apollo react-apollo apollo-client apollo-server

我有这个RootQuery:

const RootQuery = new GraphQLObjectType({
    name: 'RootQueryType',
    fields: {
        user: {
            type: UserType,
            args: { id: { type: GraphQLID } },
            resolve(parent, {id}) {
                return User.findById(id)
            }
        },

然后我将使用此查询来获取用户:

{
  user(id:"5bd78614e71a37341cd2b647"){
    id
    userName
    password
    isAdmin
  }
}

它工作得很好',现在我不想通过用户名获取用户, 我想通过他的userName插入他,所以我用了这个

const RootQuery = new GraphQLObjectType({
    name: 'RootQueryType',
    fields: {
        user: {
            type: UserType,
            args: { userName: { type: GraphQLString } },
            resolve(parent, {userName}) {
                console.log('userName',userName)
                return User.find({ userName })
            }
        },

这将带回所有属性为null的用户 请帮忙!

1 个答案:

答案 0 :(得分:1)

首先,您应该使用listen your_ip:80仅获得一个用户,findOne将为您带来该名称的所有用户。如果您愿意的话,也许您的回报应该是find。 如果它带来了所有属性,则可能是因为您正在查询中要求它们。 另外,您可能在函数上缺少type: GraphQLList(UserType)await User.find({ userName })

async

检查这是否对您有帮助:)