Node.js 虚拟方法没有';在mongoose中执行findOneAndUpdate查询时是否不运行?

Node.js 虚拟方法没有';在mongoose中执行findOneAndUpdate查询时是否不运行?,node.js,mongodb,mongoose,mongodb-query,mongoose-schema,Node.js,Mongodb,Mongoose,Mongodb Query,Mongoose Schema,用户模式的某些部分 hash_密码:{ 类型:字符串, 要求:正确, }, salt:String,//没有密码这样的字段,它用于创建哈希密码 这就是问题所在 const updateuser=await User.findOneAndUpdate( {resetPasswordLink}, { 密码:newPassword, 重置密码链接:“”, } ); 发送的密码将被散列并存储为散列密码 虚拟场 userSchema .virtual(“密码”) .set(功能(密码){ //暂时的

用户模式的某些部分

hash_密码:{
类型:字符串,
要求:正确,
},
salt:String,//没有密码这样的字段,它用于创建哈希密码
这就是问题所在

const updateuser=await User.findOneAndUpdate(
{resetPasswordLink},
{
密码:newPassword,
重置密码链接:“”,
}
);
发送的密码将被散列并存储为散列密码

虚拟场

userSchema
.virtual(“密码”)
.set(功能(密码){
//暂时的
此密码为.\u password=password;
//制盐
this.salt=this.makeSalt();
//加密密码
this.hashed_password=this.encryptPassword(密码);
})
.get(函数(){
返回此密码。\u;
});
这些方法有助于实现上述虚拟场

userSchema.methods={
身份验证:函数(纯文本){
返回此.encryptPassword(明文)==此.hashed_密码;
},
encryptPassword:函数(密码){
如果(!password)返回“”;
试一试{
返回密码
.createHmac(“sha1”,这是盐)
.更新(密码)
.摘要(“十六进制”);
}捕捉(错误){
返回“”;
}
},
makeSalt:函数(){
返回Math.round(new Date().valueOf()*Math.random())+“”;
},
};
因此,resetPasswordLink会被更新,但是哈希密码不会被更新,从而获取密码并对其进行加密