Javascript 为什么不从数据库中提取salt和hash值NodeJS

Javascript 为什么不从数据库中提取salt和hash值NodeJS,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我无法从数据库中获取哈希值和salt值。它们在注册期间存储,但不会从应用程序中检索。下面是数据库的快照,控制台屏幕显示检索到的用户信息(不含salt和hash值)、用户模式和用于获取数据的代码 数据库中用户数据的快照(MongoDB) 控制台上相同用户数据的快照注意:验证电子邮件后,isVerified更改为true(数据库快照是在验证帐户后拍摄的) 验证用户的模式方法 UserSchema.methods.validPassword=函数(密码){ var hash=crypto.pbkd

我无法从数据库中获取哈希值和salt值。它们在注册期间存储,但不会从应用程序中检索。下面是数据库的快照,控制台屏幕显示检索到的用户信息(不含salt和hash值)、用户模式和用于获取数据的代码

数据库中用户数据的快照(MongoDB)

控制台上相同用户数据的快照注意:验证电子邮件后,isVerified更改为true(数据库快照是在验证帐户后拍摄的)

验证用户的模式方法

UserSchema.methods.validPassword=函数(密码){
var hash=crypto.pbkdf2Sync(密码,this.salt,1000,64,`sha512`)。toString(`hex`);
if(this.hash==hash){
返回true;
}
返回false;
};
下面是我的用户模式

constuserschema=mongoose.Schema({
用户名:{
类型:字符串,
必填项:true
},
电邮:{
类型:字符串,
独一无二:没错,
必填项:true
},
角色:{
键入:“字符串”,
默认值:“用户”
},
已验证:{
类型:布尔型,
默认值:false
},
hash:String,
盐:绳子,
令牌:字符串,
passwordResetToken:String,
passwordResetExpires:日期
});
用于获取用户的代码

User.findOne({
用户名:req.body.username
},(错误,用户)=>{

console.log(user.validPassword(请求正文.密码)+"您也可以在这里添加userSchema。您很可能在声明时错过了
salt
字段。刚刚添加了架构。我已经在其中包含了salt和hash。@Georgoothhow您获取用户吗?@VsevolodGoloviznin我添加了用于获取用户的代码。@GauravThantry我认为您没有正确使用这些方法,请检查o本文件: