Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不更新查看器_Javascript_Reactjs_Graphql_Relay - Fatal编程技术网

Javascript 不更新查看器

Javascript 不更新查看器,javascript,reactjs,graphql,relay,Javascript,Reactjs,Graphql,Relay,我正在尝试使用jwt令牌向我的应用程序添加身份验证。我已经创建了一个带有FIELDS\u CHANGE类型的LoginMutation,但看起来relay没有将其与现有模型连接起来。 我已经列出了我的中继变异和模式变异 我的登录地址: import Relay from 'react-relay'; export default class LoginMutation extends Relay.Mutation { static fragments = { viewer: ()

我正在尝试使用jwt令牌向我的应用程序添加身份验证。我已经创建了一个带有FIELDS\u CHANGE类型的LoginMutation,但看起来relay没有将其与现有模型连接起来。 我已经列出了我的中继变异和模式变异

我的登录地址:

import Relay from 'react-relay';

export default class LoginMutation extends Relay.Mutation {

  static fragments = {
    viewer: () => Relay.QL`
      fragment on User {
                id
      }
    `
  };

  getMutation() {
    return Relay.QL`mutation{loginUser}`;
  }

  getFatQuery() {
    return Relay.QL`
      fragment on LoginPayload {
                viewer {
                    userId
                    email
                    password
                    jwt_token
                }
      }
    `;
  }

  getConfigs() {
    return [{
      type: 'FIELDS_CHANGE',
      fieldIDs: {
        viewer: this.props.viewer.id
      }
    }];
  }

  getVariables() {
    // inputs to the mutation
    return {
      email: this.props.credentials.email,
      password: this.props.credentials.password
    };
  }

  getOptimisticResponse() {
    return {
      viewer: {
                email: this.props.credentials.email
      }
    };
  }

}



const loginMutation = mutationWithClientMutationId({
    name: 'Login',
    inputFields: {
        email: {
            type: new GraphQLNonNull(GraphQLString)
        },
        password: {
            type: new GraphQLNonNull(GraphQLString)
        }
    },
    outputFields: {
        viewer: {
            type: userType,
            resolve: (user) => user
        }
    },
    mutateAndGetPayload: ({ email, password }, request) => {
        return getUserByCredentials(email, password)
            .then((user) => {
                if (!user) {
                    return newUser;
                }

                user.jwt_token = jwt.sign({
                    id: user.id,
                    name: user.name,
                    email: user.email
                }, JWT_SECRET);

                return user;
            })
            .catch((error) => { throw error; });
    }
});

也许您需要将更改的字段(userId、email、password和jwt_令牌)也添加到静态片段中?为什么静态片段属性中有名为
viewer
,但定义的片段是
User
上的片段?我假设您的
字段\u CHANGE
获取的是用户ID而不是查看者ID。存在相同的问题,因此如果您找到了解决方案或发现这是不可能的,请告诉我!另外@LordDave我的getVariables fragment查询在查看器上设置为fragment,但仍然存在此问题。可能您需要添加更改的字段(用户ID、电子邮件、密码和jwt_令牌)还有静态片段?为什么静态片段属性中有名为
viewer
,但定义的片段是
User
上的片段?我假设您的
字段\u CHANGE
获取的是用户ID而不是查看者ID。存在相同的问题,因此如果您找到了解决方案或发现这是不可能的,请告诉我!另外@LordDave我的getVariables片段查询在查看器上设置为fragment,但仍然存在问题。