【发布时间】:2018-03-10 20:00:48
【问题描述】:
错误:需要数据和哈希参数
当然,这个问题已经被问过了。但我的问题是不同的。我正在尝试使用已注册到 mongodb 的 username - lucky 和 password - mani 登录。但是我的项目运行不正常。下面给出了它的 userroutes.js。
router.post('/login',(request,response)=>{
console.log(request.body.form_username);//lucky
console.log(request.body.form_password)//mani
userOperation.login(response,request);});
在这里,我在控制台上获取用户名和密码。 现在它正在调用 userOperation.login。这是实现 userOperation.login 的 usercrud.js。 `
var User = require("../../schema/user/userschema");
var bcrypt = require('bcrypt');
const userOperation={
login(res,request){
console.log(request.body.form_username);//lucky
console.log(request.body.form_password);//mani
User.findOne({ userid:request.body.form_username}, function (err, user) {
console.log(request.body.form_username);//undefined....why???
console.log(request.body.form_password);//undefined....why???
if (err) {
return done(err); }
if (!user) {
return done(null, false, { message: 'no user found' });
}
if(user){
bcrypt.compare(request.body.form_username, user.password, function(err, res) {
if (err)
throw err;
if(!res) {
console.log('Ooops!. Wrong Pass!');
return done(null, false, req.flash('loginMessage', 'Oops! Wrong password.')); // create the loginMessage and save it to session as flashdata
}
if(res){
// request.session.userid = request.body.form_username;
// request.sesssion.password = request.body.form_password;
response.send("Login Done");
}
});
}
});
},
}`
仍然可以正确打印用户名和密码,但这里 问题开始-- 当我尝试在 User.find() 中打印用户名和密码时,它正在打印 undefind。 为什么?????? 这就是为什么我收到 错误:需要数据和哈希参数 因为我试图给 bcrypt.compare()
一个未定义的参数this is link of screenshot of the server console
我的第二个问题是为什么我在服务器启动后四次未定义?? 这是userschema.js
var mongoose = require("../../connection");
var Schema = mongoose.Schema;
var userSchema = new Schema({userid:String,
password:String
});
var User = mongoose.model("onlineusers",userSchema);
module.exports = User;
【问题讨论】:
标签: node.js mongodb express mongoose mongoose-schema