为什么 Mongoose 不验证空文档?

2023-12-21

假设我有一个非常简单的模式,带有一个始终返回 false 的自定义验证函数。

var MofoSchema = new mongoose.Schema({
  name: String
});

MofoSchema.path('name').validate(function (value) {
  console.log("I'm validating");
  return false;
}, 'No pasaran');

mongoose.model('Mofo', MofoSchema);

然后我创建文档的新实例并验证它:

var Mofo = mongoose.model('Mofo');
var mofo = new Mofo({name: "Tarte flambée"});

mofo.validate(function(err) {
  console.log(err);
});

完美,自定义验证器函数被调用并且err充满。

但现在我也做同样的事没有数据:

var Mofo = mongoose.model('Mofo');
var mofo = new Mofo({});

mofo.validate(function(err) {
  console.log(err);
});

The 未调用自定义验证器函数 and err未定义。 为什么?我不明白为什么 Mongoose 不运行自定义验证器。

这是设计使然吗?这是一个错误吗? 我应该扭转局面吗?我应该在验证之前手动检查空数据吗?

难道我做错了什么?

PS:如果你打电话save,尽管有自定义验证器,文档仍将在 MongoDB 中保存为空。


我认为猫鼬只会验证现有字段。

因此您可以使用“null”值来激活验证

var mofo = new Mofo({name: null});

对于空或未定义

var MofoSchema = new mongoose.Schema({
  name: {type: String, required: true}
});

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

为什么 Mongoose 不验证空文档? 的相关文章

随机推荐

  • __attribute__((weak)) 和静态库

    我想在我的代码中引入一个弱符号 但是 当使用 a 文件时我无法理解它的行为 这是我的最小例子 文件a h void foo attribute weak 文件 a c include a h include
  • 在 jq 中“转置”对象

    我不确定 转置 在这里是否是正确的术语 但我希望使用jq转置一个二维对象 如下所示 name A keys k1 k2 k3 name B keys k2 k3 k4 我想把它改成 k1 A k2 A B k3 A B k4 A 我可以用以
  • UrlRewriteFilter:www 和 https 重定向

    我正在使用 Tuckey UrlRewriteFilter 强制用户转到我的网站的 www 和 https 版本 我的意思是接下来的 3 个 URL 必须重定向到https www myweb com http www myweb com
  • 当我更改路线时,Laravel ajax 搜索不起作用

    我目前面临 ajax 搜索问题 我认为这与路线有关 但我不确定出了什么问题 也许现在编码还为时过早 这有效 这不起作用
  • 将 HTML 表的 元素指定为 Marionette for Backbone.js 中的区域

    Problem Using a Backbone Marrionette Layout https github com derickbailey backbone marionette blob master docs marionett
  • Excel VBA 具有多个搜索条件并循环,直到找到所有不同的结果

    我对 VBA 非常陌生 并且截止日期非常短 因此如果我没有遵循所有论坛指南 我深表歉意 如果您能提供任何帮助 我将不胜感激 Goal 在 Sheet1 中搜索关键字 活动 站点地址 描述 所有者 估价 子类型 和 DATE B 一旦找到关键
  • 如何使用 UITableViewCell 附件复选标记取消选中所有行

    我有一个UITableView每行包含一个复选框 使用UITableViewCellAccessoryCheckmark 我不知道如何使用取消选中所有复选框didSelectRowAtIndexPath method void tableV
  • 如何通过弹出窗口获取输入并通过 javascript/jquery 将文本放入变量中

    我的页面上有一个按钮 单击时 应出现一个弹出框 允许用户输入文本 当按下 确定 提交 时 我的 jscript 将使用输入的数据执行一些功能 非常简单 但我就是不知道该怎么做 Thanks 以最简单的形式 您可以使用提示 问题 默认 摘自w
  • 使用真正的随机盐或用户名盐加胡椒进行密码哈希?

    考虑以下两种方法 hashedPassword hash trulyRandomSalt password 其中 hashedPassword 和 trueRandomSalt 存储在数据库中 hashedPassword hash app
  • 无法连接到应用程序正在侦听的 Docker 容器端口

    我想运行 Jenkins 但为了演示问题 我在 Ubuntu 15 10 中运行 netcat 服务器容器 Docker version 1 6 2 build 7c8fca2 这是我的 Dockerfile FROM ubuntu CMD
  • 使用 pandas dataframe 的内存泄漏

    我在用pandas DataFrame在多线程代码中 实际上是DataFrame called Sound 我注意到我有内存泄漏 因为我的程序的内存使用量逐渐增加超过 1000 万 最终达到计算机内存的 100 并崩溃 I used obj
  • 在 dart 中使用 source_gen 为一系列已解析文件生成一个文件

    我有一个创建迷你反射系统所需的模型列表 我分析了可序列化包并了解如何为每个文件创建一个生成的文件 但是 我找不到如何为大量文件创建一个文件 那么 如何使用 source gen 为一系列文件动态生成一个文件呢 Example Files用户
  • 使会话无效

    我有一个基于 jsp servlet 的应用程序 会话时间超过 30 分钟 我想在有人有意或无意关闭浏览器窗口时立即使会话无效 操作系统关闭 从tast管理器关闭 断电 我可以对此进行检查并使会话无效吗 无法处理这种情况 有一些浏览器提供此
  • 在 JavaScript 中将“'”替换为“”

    我的字符串是这样的 temp SE019 SR132 SC123 我使用如下函数 temp replace 但结果将是 SE019 SR132 SC123 仅删除第一个引号 我需要删除所有引号 使用正则表达式文字g 对于全局 意味着匹配al
  • 无法导入设置;不在系统路径上

    我正在尝试让 Django 使用 virtualenv 工作 我已经上线了 hello world 页面 但是 现在似乎出了问题 因为我的大多数命令都给出了有关 myProject settings 的相同错误 myenv user min
  • 如何使用 Azure 表存储选择 RowKey 范围?

    我想使用主键查询我的天蓝色表存储 另外我想检查我的 RowKey 是否在一个范围内 例如范围 02001 到 02999 有人能告诉我该怎么做吗 我了解如何用简单的方法查询 PK where fooEntiy PartitionKey pa
  • 如何在Python中配置装饰器

    我正在尝试使用 Thespian https thespianpy com doc https thespianpy com doc 一个用于演员模型的 Python 库 特别是我正在尝试使用 剧团 功能 据我了解 剧团装饰器充当调度程序
  • 合并 GitHub 帐户 - 贡献和统计数据

    我想合并我的两个 GitHub 帐户 这意味着将存储库所有权转移到一个帐户 并删除另一个帐户 根据https help github com articles transferring a repository https help git
  • 新的时间轴,如按钮行为

    在新样式的页面选项卡上 赞 按钮不再刷新页面 这打破了 Like gates 的现有工作流程 即在服务器上检查签名的请求 就像页面一样 页面刷新 繁荣 选项卡现在更新为 喜欢 状态 当用户单击新的 赞 按钮时 是否会触发任何类型的事件 或者
  • 为什么 Mongoose 不验证空文档?

    假设我有一个非常简单的模式 带有一个始终返回 false 的自定义验证函数 var MofoSchema new mongoose Schema name String MofoSchema path name validate funct