我正在用graphql和Neo4J构建一个数据库api。我正在使用makeAugmentedSchema构建我的模式,它来自包neo4j-graphql-js,它根据您的模式为您生成突变和查询。我正在尝试添加一些自定义解析来帮助验证用户,但是,我可以弄清楚如何调用由makeAugmentedSchema创建的现有突变,或者这是否可能?
const schema = makeAugmentedSchema({
typeDefs,
resolvers,
config: {
auth: {
isAuthenticated: true,
}
}
});
这是在我的服务器文件中,我正在创建这个扩展的模式,它创建了像创建、更新和删除这样的突变。我很难考虑如何处理身份验证,所以我试图创建一个名为registerUser的自定义解析器来加密密码,然后运行createUser突变,但不确定如何引入现有的突变。这是现在的样子。
import bcrypt from 'bcrypt';
import { schema } from './graphql-schema';
export const resolvers = {
Mutation: {
registerUser: async (_, { email, password }) => {
const hashPassword = await bcrypt.hash(password, 10);
console.log(schema, 'herrrr');
await schema.User.create({
email,
password: hashPassword
})
return true;
}
}
}
我想在不使用auth0的情况下处理身份验证。对于neo4j的新手,并且不确定最好的方法,如果有任何关于如何做到这一点的建议,将非常感谢。
因此,您需要解构args
参数以获取密码并在创建用户之前对其进行哈希。不需要创建一个新的解析器来处理这个散列,您可以在这里重新定义CreateUser解析器,然后将修改后的args
传递给neo4jgraphql
调用,如下所示:
import bcrypt from 'bcrypt';
import { schema } from './graphql-schema';
export const resolvers = {
Mutation: {
CreateUser: async (obj, args, context, info) => {
const password = await bcrypt.hash(password, 10);
args = {
...args,
password,
}
return neo4jgraphql(obj, args, context, info);
}
}
}
希望这有帮助!