我正在关注此 tutorial by Robin Wieruch
使用jwt和GraphQL实施用户注册时,我无法通过GraphQL Mutation提供值
Server.js
const server = new ApolloServer({
typeDefs: gql(typeDefs),
resolvers,
context: { db },
secret: process.env.SECRET,
});
models / user.js
export default (sequelize, DataTypes) => {
const User = sequelize.define('user', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
username: {
type: DataTypes.STRING,
unique: true,
allowNull: false,
},
password: {
type: DataTypes.STRING,
allowNull: false,
validate: {
notempty: true,
len: [8],
},
},
email: {
type: DataTypes.STRING,
unique: true,
allowNull: false,
validate:{
isEmail: true,
},
},
createdAt: {
},
createdAt: {
type: DataTypes.DATE,
allowNull: true
},
updatedAt: {
type: DataTypes.DATE,
allowNull: true
},
deleted_at: {
type: DataTypes.DATE,
allowNull: true
}
},
{
freezeTableName: true,
});
User.beforeCreate( async user => {
user.password = await user.generatePasswordHash();
});
User.prototype.generatePasswordHash = async function() {
const saltRounds = 10;
return await bcrypt.hash(this.password, saltRounds);
};
return User;
};
模式
type Mutation {
signUp(username: String!, email: String!, password: String!): Token!
}
type Token {
token: String!
}
解析器
signUp: async(
parent,
{ username, password, email},
{db, secret },) => {
const user = await db.user.create({
username,
password,
email,
});
return { token: createToken(user, secret, '30m')};
},
我目前被困在下面的GraphiQL突变中:
mutation($username: String!, $password: String!, $email: String!){
signUp(username: $username, password: $password, email: $email){
u
}
}
如您所见,当我键入u时,我应该会看到用户名,密码和电子邮件自动填充。或可能是我的突变格式不正确。
请纠正,我错了。
答案 0 :(得分:0)
mutation($email: String!, $username: String!, $password: String!){
signUp(email: $email, username: $username, password: $password){
token
}
}