当前位置: 首页 > 面试题库 >

错误:需要数据和盐参数

马梓
2023-03-14
问题内容

我正在尝试使用post请求将用户保存到mongodb数据库,如下所示,但我收到错误bcrypt错误:需要数据和哈希参数。这是代码的非常简单的设置,但我不知道它有什么问题。models
/ users.js

const mongoose = require('mongoose');

const bcrypt = require('bcrypt');

const confic = require('../models/users');



// User schema

const UserSchema = mongoose.Schema({

    name: {

        type: String,

    },

    email: {

        type: String,

        required: true

    },

    username:{

        type: String,

        required: true

    },

    password: {

        type: String,

        required: true

    }

});



const User = module.exports = mongoose.model('User', UserSchema);



module.exports.getUserById = function(id,callback){

    User.findById(id,callback);

}



module.exports.getUserByUsername = function(username,callback){

    const query = {username:username}

    User.findOne(query,callback);

}



module.exports.addUser= function (newUser, callback) {

   bcrypt.genSalt(10,(err,salt) => {

    bcrypt.hash(newUser.password, salt , (err, hash) =>{

        if(err) throw (err);



        newUser.password=hash;

        newUser.save(callback);

    });

   });

}

路线/users.js

const jwt = require('jsonwebtoken');

User = require('../models/users')



// // Register

router.post('/register', (req, res, next) => {

  var newUser = new User({

    name: req.body.name,

    email: req.body.email,

    username: req.body.username,

    password: req.body.password

  });



  User.addUser(newUser, (err, User) => {

    if(err){

      // res.json({success: false, msg:'Failed to register user'});

    } else {

      // res.json({success: true, msg:'User registered'});

    }



  });



});



// Authenticate

router.post('/authenticate', (req, res, next) => {

  res.send('AUTHENTICATE');

});



// Profile

router.get('/profile', (req, res, next) => {

  res.send('PROFILE');

});



module.exports = router;

服务器正在运行,但是在使用邮递员chrome后显示请求错误,并且服务器停止工作,如图中所示。在此处输入图片说明


问题答案:

错误来自bcrypt.hash方法。就您而言,您具有以下代码段:

bcrypt.hash(newUser.password, salt , (err, hash) => { ... }

我认为您的问题来自newUser.password必须为空的(nullundefined)。错误说data and salt arguments required。看来您的盐是正确生成的,并且您没有检查是否newUser.password === undefined,所以这是我的赌注:某种程度上newUser.password是不确定的。

另外,您可以像调用方法一样在调用后genSalt添加该方法,以检查该方法是否工作正常。if(err) throw (err);``bcrypt.hash

希望对您有帮助,
最好的问候



 类似资料:
  • 我不知道我做错了什么。。。我得到了球员的错误。draw()函数。它所说的不好的争论是在爱情中。图样矩形()方法。这意味着v.x是一个糟糕的论点。但它应该起作用。v.x和v.y都应该工作。因为它访问表或数组中元素的字段,对吗?有人能告诉我我做错了什么,以及如何解决这个问题吗?非常感谢!这是我的代码:

  • 我们有一个实体的层次结构,例如,抽象Basket和两个concrete,它们又可以包含一些其他项的列表,例如,具有完全相同的层次结构(SaleBasketItem,ReturnBasketItem)。 因此,当我尝试执行hql查询时,问题就出现了 其中动态地为“sale”或“return”。然后,我将该查询放入中,其类型为我需要的,并尝试,其中是表示混凝土篮状态的一些枚举(每个混凝土类都不同,在抽

  • 当尝试ViewChild时,我会得到错误。错误为“未提供'opts'的参数。” @ViewChild都给出了错误。 ts(11,2):错误TS2554:应为2个参数,但得到1。

  • 问题内容: 运行此代码时出现4个错误,这些错误将用户的电子邮件地址添加到名为的表中称为的数据库中。 $ con = new mysqli(’localhost’,’root’,’‘,’ecommerce’); 错误是这样的: 警告:mysqli_query()至少需要2个参数,第27行给出1个 第27行: $ query = mysqli_query(“ SELECT * FROM subscri

  • 我得到了 错误:Route.Get()需要一个回调函数,但得到了一个[object Undefined] 这是我的路由文件: 错误日志: 错误:route.get()需要回调函数,但在route.(anonymous function)[as get](C:\users\PAI\DesktoP\mean\node_modules\express\lib\router\route.js:202:15

  • 我正在学习Spring MVC,并试图验证表单。当用户搜索空白字符串时,将显示错误。当我执行我的代码时,我得到以下错误 Errors/BindingResult参数应该紧随控制器方法签名中的模型属性参数之后:public java.lang.string com.mycompany.controller.catalog.searchController.search(javax.servlet.h