You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TS报错:属性findOneTimeTokenCredentialsByEmail不存在于typeof CredentialsDao类型

问题原因

你收到的报错本质是调用方式和方法定义不匹配:findOneTimeTokenCredentialsByEmail是CredentialsDao类的实例方法,仅属于类的实例对象,不属于类本身,所以直接用CredentialsDao.方法名的类名调用方式会触发类型错误。

解决方法

方案1(推荐:符合现有类设计)

先实例化CredentialsDao类,再通过实例调用目标方法,同时注意该方法是异步方法,调用时需要加await,且必须传入必填的email参数:

// 1. 先实例化DAO类
const credentialsDao = new CredentialsDao()

async disableOneTimeCredentials() {
  // 替换为实际业务需要查询的邮箱
  const targetEmail = "user@example.com"
  // 2. 通过实例调用方法,必须加await处理异步返回
  const emailAndOneTimeToken = await credentialsDao.findOneTimeTokenCredentialsByEmail(targetEmail)
}

如果项目中CredentialsDao需要全局复用,可以直接在DAO文件中导出单例实例,避免重复实例化:

// CredentialsDao文件末尾追加代码
export const credentialsDao = new CredentialsDao()

// 业务文件直接导入实例使用即可
import { credentialsDao } from './你的DAO文件路径'

方案2(不推荐,仅做说明)

如果你确实需要直接通过类名调用方法,可以将方法改为静态方法,但要注意静态方法内部无法访问this上的实例属性(你现有代码中的this.Model会报错,因此该方案不适用于你当前的场景):

// 仅做示例,你的场景不适用该修改
export class CredentialsDao {
  // 加static修饰符改为静态方法
  static async findOneTimeTokenCredentialsByEmail(email: string): Promise<ICredential> {
    // 这里不能再用this.Model,需要替换为静态属性的访问方式
    return XXXModel.findOne(...)
  }
}

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:57:01