当前位置: 首页 > 知识库问答 >
问题:

neo4j MakeaugmentedSchema?

傅峻
2023-03-14

我正在用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的新手,并且不确定最好的方法,如果有任何关于如何做到这一点的建议,将非常感谢。

共有1个答案

范宏大
2023-03-14

因此,您需要解构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);
    }
  }
}

希望这有帮助!

 类似资料:

相关问答

相关文章

相关阅读