您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Typescript猫鼬静态模型方法“类型上不存在属性”

Typescript猫鼬静态模型方法“类型上不存在属性”

我认为您遇到了我刚刚遇到的同样问题。您可以拨打此电话。几个教程让您.comparePassword()从这样的模型中调用方法

User.comparePassword(candidate, cb...)

这是行不通的,因为该方法位于上,schema而不位于上model。我能够调用方法的唯一方法是使用标准的mongoose / mongo查询方法找到该模型的实例。

这是我的护照中间件的相关部分:

passport.use(
  new LocalStrategy({
    usernameField: 'email'
  },
    function (email: string, password: string, done: any) {
      User.findOne({ email: email }, function (err: Error, user: IUserModel) {
        if (err) throw err;
        if (!user) return done(null, false, { msg: 'unkNown User' });
        user.schema.methods.comparePassword(password, user.password, function (error: Error, isMatch: boolean) {
          if (error) throw error;
          if (!isMatch) return done(null, false, { msg: 'Invalid password' });
          else {
            console.log('it was a match'); // lost my $HÏT when I saw it
            return done(null, user);
          }
        })
      })
    })
);

因此,我曾经findOne({})获取文档实例,然后不得不通过深入研究文档上的架构属性来访问架构方法user.schema.methods.comparePassword

我注意到了几个区别:

其他 2022/1/1 18:18:16 有450人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶