Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – bcrypt-node抛出错误“没有给出回调函数”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用JWT身份验证创建用户注册.我正在使用bcrypt-node模块进行密码哈希和盐渍.

useraModel.js

var mongoose    =require('mongoose');
var scheR_764_11845@a      =mongoose.scheR_764_11845@a;
var bcrypt      =require('bcrypt-node');

var UserscheR_764_11845@a=new scheR_764_11845@a({
    name:{type@R_450_7101@g,unique:true,required:truE},password:{type@R_450_7101@g,required:truE}
});

    UserscheR_764_11845@a.pre('save',function (next) {
        var user = this;
        if (this.isModified('password') || this.isNew) {
            bcrypt.genSalt(10,function (err,salt) {
                if (err) {
                    return next(err);
                }
                bcrypt.hash(user.password,salt,hash) {
                    if (err) {
                        return next(err);
                    }
                    user.password = hash;
                    next();
                });
            });
        } else {
            return next();
        }
    });

    UserscheR_764_11845@a.methods.comparepassword = function (passw,cb) {
        bcrypt.compare(passw,this.password,ismatch) {
            if (err) {
                return cb(err);
            }
            cb(null,ismatch);
        });
    };

    module.exports = mongoose.model('User',UserscheR_764_11845@a);

passport.js

var JwtStrategy     =require('passport-jwt').Strategy; 
var User                =require('../app/models/user');
var config            =require('../config/database');

module.exports=function(passport){
      var opts = {}; 
  opts.secretOrKey = config.secret;
  passport.use(new JwtStrategy(opts,function(jwt_payload,donE) {
    User.findOne({id: jwt_payload.iD},function(err,user) {
          if (err) {
              return done(err,falsE);
          }
          if (user) {
              done(null,user);
          } else {
              done(null,falsE);
          }
      });
  }));
};

app.js

apiRoutes.post('/signup',function(req,res) {
  if (!req.body.name || !req.body.password) {
     res.json({success: false,msg: 'Please pass name and password.'});
         } else {
                var newUser = new User({
                                 name: req.body.name,password: req.body.password
                         });
    // save the user
        newUser.save(function(err) {
         if (err) {
                 return res.json({success: false,msg: 'Username already exists.'});
                }
                res.json({success: true,msg: 'successful created new user.'});
                });
             }
        });

当我运行此代码时,它显示错误

throw "No callBACk function was given".

No CallBACk function was given

请帮我修复此代码.
谢谢

解决方法

bcrypt.hash()需要4个参数:

hash(data,progress,cb)

文档对此不清楚:它声明数据,salt和cb是必需的,这意味着进展不是,但没有它你就会得到错误.

如果您不关心跟踪进度,请传递null:

bcrypt.hash(user.password,null,hash) { ... })

大佬总结

以上是大佬教程为你收集整理的node.js – bcrypt-node抛出错误“没有给出回调函数”全部内容,希望文章能够帮你解决node.js – bcrypt-node抛出错误“没有给出回调函数”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。