Mongoose 实例方法未定义

2023-11-23

我使用 Mongoose 定义了一个实例方法来验证代表(用户):

RepSchema.methods.authenticate = function(password){
  return this.encryptPassword(password) === this.hashed_password;
};

在我的应用程序中,我找到代表并致电authenticate其方法:

var mongoose = require("mongoose");
var Rep = mongoose.model("Rep");

Rep.findOne({email: email}, function(err, rep){
  if (rep.authenticate(req.body.session.password)){
    req.session.rep_id = rep._id;
    res.redirect('/calls', {});
  }
});

但是我收到这个错误:

TypeError: Object { email: '[email protected]',
  password: XXXXXXXXX,
  name: 'meltz',
  _id: 4fbc6fcb2777fa0272000003,
  created_at: Wed, 23 May 2012 05:04:11 GMT,
  confirmed: false,
  company_head: false } has no method 'authenticate'

我究竟做错了什么?


所以我终于明白我做错了什么。 mongoose源码应用了里面所有定义的方法schema.methods模型的架构设置为模型名称时的模型原型(mongoose.model("modelname", modelSchema))。因此,在将模型设置为其名称之前,您必须定义所有方法,这会将这些方法添加到 Schema 实例的方法对象中。我在定义方法之前设置模型。问题解决了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mongoose 实例方法未定义 的相关文章

随机推荐

  • R中按行号分割数据帧

    这可能非常简单 但我找不到解决方案 df lt data frame replicate 10 sample 0 1 10 rep TRUE v lt c 3 7 有没有一种优雅的方法可以在 v 中指定的行号处将此数据帧拆分为 列表的 三个
  • 将大小为编译时常量的数组初始化为单个值

    我有一个 c 风格的数组 其大小由 a 定义 define并且可以根据编译选项进行更改 例如 if LINUX define SIZE 4 else define SIZE 5 endif static int myArr SIZE 如何将
  • Reader和InputStream有什么区别?

    Reader和InputStream有什么区别 以及何时使用什么 如果我可以使用 Reader 来读取字符 为什么我会使用 inputstream 我想读取对象 InputStream 是从资源获取信息的原始方法 它逐字节抓取数据 而不执行
  • 指针初始化为什么?

    有件事总是让我困惑 那就是字符指针 四年后 我再次徘徊在 c 语言上 以上述案例为例 为什么char指针的行为是这样的 当指针指向任何内容时 我们如何直接寻址指针的内容 或者就像 char 指针存储地址以外的东西一样 include
  • 编写 Iron Python 调试器

    作为学习练习 我正在使用 IronPython 为自己编写一个简单的扩展 插件 宏框架 我已经掌握了基础知识 但我想添加一些基本的调试支持 以使我的脚本编辑器更易于使用 我在互联网上搜索了一下 发现了一些关于编写托管调试器的好资源 包括 M
  • 在 C 中用零覆盖整个文件的最快方法是什么?

    我需要做的是以最快的方式将整个文件内容用零填充 我知道一些Linux命令 比如cp实际上得到一次写入的最佳块大小信息是多少 但我无法弄清楚使用此块大小信息是否足以获得良好的性能并且看起来像st blksize来自stat 没有给我那个块大小
  • Haskell do 符号绑定

    我正在尝试对 Haskell 中的 do 语句进行脱糖处理 我在这里找到了一些例子 但无法将它们应用到我的案例中 我唯一能想到的是一个沉重的嵌套 let 语句 这看起来很丑陋 其中 do 表示法应替换为 bind 的语句 do num lt
  • 更改窗口的消息循环线程

    最近我尝试将窗口的消息循环放在它自己的线程中 我想知道为什么它从未收到任何消息 但我了解到Windows将消息发送到创建窗口的线程 如何在一个线程中创建一个窗口并使另一个线程接收该窗口的消息 我已经看到了 PostThreadMessage
  • 孩子在平面结构多模块maven构建中找不到父pom

    我正在设置一个具有扁平结构的多模块项目 即父级和子级位于同一基目录中 父级定义为
  • 为什么无法在升级中更改放置限制?

    我的 Azure Service Fabric 群集中运行着无状态 ASP NET Core RC1 服务 它具有以下清单
  • 更新 knex 迁移中的枚举列类型

    我正在寻找编写一个迁移字符串以将新字符串添加到枚举列类型 我正在尝试添加gamma to the service column 我尝试使用下面的代码 这会发生冲突 因为表和列已经存在 const table user association
  • 具有相同案例名称和不同类型关联值的枚举

    以下 Swift 代码可编译 enum GraphDataSource case array data Double start Double step Double case pairs XYValues Double Double ca
  • Python脚本运行方式的差异

    我有一个非常简单的 Python 问题 其中包含使用 Django 的示例 运行 Python 脚本时 我是否总是必须在脚本文件名前面加上python命令 在我关注的Django教程中 一些命令如下 django admin py star
  • 如何监听“props”的变化

    In the VueJs 2 0 文档我找不到任何可以监听的钩子props变化 VueJs 有这样的钩子吗 onPropsUpdated 或类似的 Update 正如 wostex所建议的 我尝试watch我的财产 但没有任何改变 然后我意
  • 在 Rails 外部生成迁移

    我在 Rails 之外使用 ActiveRecord 我想要一个程序来生成迁移的框架 以及一个收集和维护它们的系统 有人可以提出建议吗 也来看看新品活动记录迁移
  • 两个日期之间的月份函数

    在oracle中 我可以找出使用MONTHS BETWEEN函数之间的月份数 在 postgres 中 我为此使用 extract 函数 例如 像 select extract year from age current date 2012
  • PHP和Mysql中实现哈希表的步骤

    我是编程语言新手 我正在使用 PHP 和 mysql 我收到一个用 php 做哈希表的作业 我需要做的是 存储用户收集的项目 然后显示它 在网上做了一些研究后 我将在实现哈希表时执行以下步骤 如果我错了 请纠正我 设置表格 gt 用户表 u
  • 使用反射覆盖私有方法

    NET 3 5 中是否可以使用 Reflection 重写私有方法 嗯 它需要是virtual可以覆盖它 通过编写从该类继承的动态类型 并且您不能拥有private virtual 这个不成立 你也许可以重写internal virtual
  • 从 .NET 程序集创建对象时,VB6 中出现后期绑定运行时错误

    我有一个 vb6 项目 其中引用了 vb net com 库 当我使用早期绑定时 该项目运行良好 例如 Dim b as object Set b new myComLib testObject 当我使用后期绑定时 例如 Dim b as
  • Mongoose 实例方法未定义

    我使用 Mongoose 定义了一个实例方法来验证代表 用户 RepSchema methods authenticate function password return this encryptPassword password thi