我正在用graphql和Neo4j构建一个数据库应用编程接口。我正在使用makeAugmentedSchema构建我的模式,它来自包ne4j-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的新手,并且不确定最好的方法,任何关于如何做到这一点的建议都将不胜感激。
发布于 2020-01-05 02:53:28
因此,您正在解构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);
}
}
}希望这能有所帮助!
https://stackoverflow.com/questions/55776243
复制相似问题