Как я могу получить пользователя по userName в GraphQL? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть этот 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
  }
}

все работает отлично, теперь я не хочу получать пользователя по его идентификатору, Я хочу получить его по его имени пользователя, поэтому я использовал это

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 })
            }
        },

это вернет пользователя со всеми свойствами равными нулю пожалуйста помогите !!

1 Ответ

0 голосов
/ 02 ноября 2018

Во-первых, вы должны использовать findOne, чтобы получить только одного пользователя, find принесет вам всех пользователей с этим именем. Если вы хотите этого, возможно, ваше возвращение должно быть type: GraphQLList(UserType). Если он приносит все свойства, возможно, это потому, что вы запрашиваете их в запросе. Кроме того, в вашей функции может отсутствовать await User.find({ userName }) и async:

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

Проверьте, поможет ли это вам:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...