猫鼬模式方法返回未定义

达米斯丹迪

我想创建一种使用bcrypt.compare()下面的代码来验证用户密码的方法

UserSchema.methods.validatePassword = async (data) => {
  console.log(this.email); // returns undefined
  console.log(this.first_name); // returns undefined
  return await bcrypt.compare(data, this.password);
};

这是我创建的UserSchema

const UserSchema = mongoose.Schema(
  {
    email: {
      type: String,
      required: true,
      unique: true,
    },
    password: {
      type: String,
      required: true,
    },
  },
  { timestamps: { createdAt: 'created_at', updatedAt: 'updated_at' } }
);

当进入this.password我的模式时,.pre('save', ..)它可以工作,但是当我使用模式方法时,显示未定义。:(

这是该方法的实现

const verifySignIn = async (req, res, next) => {
  const { email, password } = req.body;
  try {
    const user = await User.findOne({ email });
    if (!user) {
      return res.status(404).json({
        status: 'failed',
        message: 'User Not found.',
      });
    }
    const isValid = await user.validatePassword(password);
    if (!isValid) {
      return res.status(401).send({
        message: 'Invalid Password!',
        data: {
          user: null,
        },
      });
    }
    next();
  } catch (err) {
    Server.serverError(res, err);
  }
};
崇乐

指南中说:

千万不能使用ES6箭头函数声明的方法(=>)。箭头函数显式阻止绑定this,因此您的方法将无权访问文档...

因此,在这种情况下,您只需更改UserSchema.methods.validatePassword = async (data) => {...UserSchema.methods.validatePassword = async function(data) {...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猫鼬模式“ this”关键字返回未定义

来自分类Dev

猫鼬模式虚拟属性始终返回未定义

来自分类Dev

猫鼬findOne返回未定义

来自分类Dev

猫鼬填充返回未定义

来自分类Dev

猫鼬方法未定义

来自分类Dev

猫鼬的嵌套模式的未定义类型

来自分类Dev

猫鼬模式引用和未定义类型“ ObjectID”

来自分类Dev

猫鼬填充返回null或未定义

来自分类Dev

遍历猫鼬结果返回未定义

来自分类Dev

猫鼬找到返回的未定义文档

来自分类Dev

猫鼬:“ TypeError:未定义的类型在”

来自分类Dev

猫鼬架构未定义

来自分类Dev

猫鼬填充未定义的字段

来自分类Dev

猫鼬模型未定义

来自分类Dev

当我尝试使用猫鼬的“ findByIdAndRemove”方法时,为什么我的EJS变量返回“未定义”

来自分类Dev

猫鼬和新架构:返回“ ReferenceError:架构未定义”

来自分类Dev

猫鼬返回一个未定义的现有字段

来自分类Dev

猫鼬即使在等待时也返回未定义的状态。任何猜测可能是错误的吗?

来自分类Dev

猫鼬,NODE JS返回未定义,但在findOne内收集了正确的数据

来自分类Dev

猫鼬find()返回未定义的属性和奇怪的对象

来自分类Dev

未定义的返回值猫鼬/ Node.js递归函数

来自分类Dev

Node.js-猫鼬路径验证失败-TypeError:无法调用未定义的方法“ validate”

来自分类Dev

猫鼬和节点错误:无法调用未定义的方法“模型”

来自分类Dev

猫鼬预保存钩子中未定义“ this”

来自分类Dev

模型中的猫鼬模型未定义

来自分类Dev

猫鼬填充回调未定义

来自分类Dev

猫鼬查询缺少(或未定义)字段的地方

来自分类Dev

TypeError:无法读取猫鼬未定义的属性“ find”

来自分类Dev

如果值未定义则更新-猫鼬

Related 相关文章

热门标签

归档