Я пытался реализовать функцию SignUp с GraphQl, но я столкнулся с этой ошибкой, когда при выполнении мутации в graphql он возвращает ноль. Аутентификация при регистрации в GraphQl не работает: ошибка: - signupUser: null
это мутация, которую я напечатал, но там написано signupUser: null
проверьте здесь изображение Graphiql
schema.js
exports.typeDefs = `
type Story {
_id: ID
name: String!
category: String!
description: String!
instructions: String!
createdDate: String
likes: Int
username: String
}
type User {
_id: ID
username: String! @unique
password: String!
email: String!
joinDate: String
favorites: [Story]
}
type Query {
allStories: [Story]
}
type Token {
token: String!
}
type Mutation {
addStory(name: String!, description: String!, category: String!, instructions: String!, username: String): Story
signinUser(username: String!, password: String!): Token
signupUser(username: String!, email: String!, password: String!): Token
}
`;
resolvers.js
const jwt = require('jsonwebtoken');
const bcrypt = require("bcrypt");
const createToken = (user, secret, expiresIn) => {
const { username, email } = user;
return jwt.sign({ username, email }, secret, { expiresIn });
};
exports.resolvers= {
Query: {
allStories: async (root, args, { Story })=> {
const allStory = await Story.find();
return allStory;
}
},
Mutation: {
addStory: async (root, {name, description, category, instructions, username }, { Story }) => {
const newStory = await new Story({
name,
description,
category,
username,
instructions
}).save();
return newStory;
},
signinUser: async (root, { username, password }, { User }) => {
const user = await User.findOne({ username });
if (!user) {
throw new Error("User not found");
}
const isValidPassword = await bcrypt.compare(password, user.password);
if (!isValidPassword) {
throw new Error("Invalid password");
}
return { token: createToken(user, process.env.SECRET, "1hr") };
},
signupUser: async (root, { username, email, password }, { User }) => {
const user = await User.findOne({ username: username});
if (user) {
throw new Error("User already exists");
}
const newUser = await new User({
username,
email,
password
}).save();
return { token: createToken(newUser, process.env.SECRET, "1hr") };
}
}
};
СЕКРЕТ: ключ предоставляется в файле variables.env