【问题标题】:How do I fetch a model object by a nested value?如何通过嵌套值获取模型对象?
【发布时间】:2019-03-20 15:31:07
【问题描述】:

我是 GraphQL 的新手,所以我正在执行我的第一个查询,我正在尝试查询嵌套键 email

这是我的架构

const UserLogin = new GraphQLObjectType({
  name: 'UserLoginType',
  fields: () => ({
    login: { type: GraphQLString },
    email: { type: GraphQLString },
  }),
});

exports.UserType = new GraphQLObjectType({
  name: 'UserType',
  fields: () => ({
    id: NotNullStringType,
    name: { type: GraphQLString },
    state: { type: GraphQLString },
    login: { type: UserLogin },
  }),
});

我要做的是构建一个查询,该查询接受一封电子邮件并搜索 UserType.login.email 值并返回与该电子邮件匹配的第一个值或 null。

谢谢!

编辑:在我的redux/actions.js 文件中我添加了:

export const fetchLoginsByEmail = (userEmail) => {
  return createGraphqlAction(
    {
      query: `
        query fetchUserByEmail($userEmail: String!) {
          fetchUserByEmail(email: $userEmail) {
            login {
              email
            }
            state
            name
            id
          }
        }
      `,
      variables: {
        userEmail,
      }
    },
    FETCH_LOGINS_BY_EMAIL,
  );
};

在我的query.js 文件中,我的model.exports 对象中有这个:

fetchUserByEmail: { 
    type: UserType,
    resolve: async (source, args, { user, loginId }) => {
      if (!user) {
        return null;
      }

      return serailize({
        ...user,
        login: await getLogin(loginId),
      });
    },
  },

【问题讨论】:

    标签: javascript graphql


    【解决方案1】:

    您的查询解析器似乎缺少 arguments 参数。

    将您的 query.js 更新为:

    fetchUserByEmail: { 
        type: UserType,
        args: {
          email { type: GraphQLString }
        },
        resolve: async (source, args, { user, loginId }) => {
          // You can now use args.email here and filter your results with it
          console.log(args.email);
    
          if (!user) {
            return null;
          }
    
          return serailize({
            ...user,
            login: await getLogin(loginId),
          });
        },
      },
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2020-07-03
      • 2021-11-30
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 2021-02-10
      • 1970-01-01
      相关资源
      最近更新 更多