Javascript 不更新查看器
我正在尝试使用jwt令牌向我的应用程序添加身份验证。我已经创建了一个带有FIELDS\u CHANGE类型的LoginMutation,但看起来relay没有将其与现有模型连接起来。 我已经列出了我的中继变异和模式变异 我的登录地址: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: ()
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,但仍然存在问题。