kelektiv / node.bcrypt.js

bcrypt for NodeJs
MIT License
7.47k stars 515 forks source link

Async with methods #420

Closed kennetpostigo closed 8 years ago

kennetpostigo commented 8 years ago

I'm currently using bcrypt in a project to encrypt a password before storing it to PostgreSQL through Sequelize. Prior to including bcrypt I had the following code:

   async resolve(root, args, context) {
        var newUser = await DB.models.user.create({
          username: args.username.trim(),
          email: args.email.toLowerCase().trim(),
          password: args.password.trim()
        });

        var initiateCart = newUser.createShoppingCart({});
        var initEventCart = newUser.createEventCart({});
        return newUser;
  }

included async functions because sequelize is a promise based library and its easier/cleaner to handle with async functions.

After including bcrypt it looks like the following:

   // FIRST ATTEMPT
   async resolve(root, args, context) {
    var newUser;

    bcrypt.hash(args.password.trim(), 10, async (err, hash) => {
        console.log("hash: ", hash)
        newUser = await DB.models.user.create({
          username: args.username.trim(),
          email: args.email.toLowerCase().trim(),
          password: hash
        });
        var initiateCart = newUser.createShoppingCart({});

        var initEventCart = newUser.createEventCart({});
    });
    return newUser;
  }

   // SECOND ATTEMPT
   async resolve(root, args, context) {
    var hash = await bcrypt.hash(args.password.trim(), 10);

    var newUser = await DB.models.user.create({
      username: args.username.trim(),
      email: args.email.toLowerCase().trim(),
      password: hash
    });

    var initiateCart = newUser.createShoppingCart({});
    var initEventCart = newUser.createEventCart({});

    return newUser;
  }

However It does not seem to be hashing the password that is being passed in. Any clue as to why this may be happening? Or know of a better strategy for using async functions with bcrypt module?

maticrivo commented 8 years ago

@kennetpostigo what was your solution for this?

kennetpostigo commented 8 years ago

@maticrivo I wrapped the callback in a promise.