mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题
问题:
mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题
参考:
http://www.mongoosejs.net/docs/api.html#updateone_updateOne
https://mongoosejs.com/docs/validation.html#update-validators
https://segmentfault.com/q/1010000014305255
https://zhuanlan.zhihu.com/p/40122939
Mongoose也支持对update(),updateOne(),updateMany()和findOneAndUpdate()操作的验证。
默认情况下,更新验证器处于关闭状态-您需要指定runValidators选项。
注意:更新验证器默认情况下处于关闭状态,因为它们有一些注意事项。(至于是什么注意事项,官方文档没写啊)
// 官方示例:
var toySchema = new Schema({
color: String,
name: String
}); var Toy = db.model('Toys', toySchema); Toy.schema.path('color').validate(function (value) {
return /red|green|blue/i.test(value);
}, 'Invalid color'); var opts = { runValidators: true };
Toy.updateOne({}, { color: 'not a color' }, opts, function (err) {
assert.equal(err.errors.color.message,
'Invalid color');
});
model.update(conditions, doc, option, function (err, res){})
// conditions-查询条件 doc-需要更新的数据
// *** 其中res返回 {n:2, nModified:2, ok: 1} ***
// *** n为匹配到的条数 nModified修改的条数 ok 表为是否成功 ***
const option = { // option选项及其默认值
safe: true, // 安全模式
upsert: false, //如果不存在则创建新纪录
multi: false, // 是否更新多个查询记录
runValidators: null, // 如果值为true,执行Validation验证。
setDefaultsOnInsert: null, // 如果upsert选项为true,在新建时插入文档定义的默认值。
strict: null, // 用严格模式跟新
overwrite: false // 禁用update-only模式,允许覆盖记录。
}
解决方案:
调用Model.updateOne(conditions, doc, [options], [callback]) 方法时,添加 options 属性 runValidators: true
try {
// 修改数据库中的值
// 不验证集合规则
// await Article.updateOne({ _id }, article);
// 验证集合规则
await Article.updateOne({ _id }, article, { runValidators: true });
} catch (error) {
res.send(error);
}
mongoose 更新数据时不验证数据(忽略设定的集合规则)的问题的更多相关文章
- 爬虫爬数据时,post数据乱码解决办法
最近在写一个爬虫,目标网站是:http://zx.bjmemc.com.cn/,可能是为了防止被爬取数据,它给自身数据加了密.用谷歌自带的抓包工具也不能捕获到数据.于是下了Fiddler. F ...
- 爬虫爬数据时,post数据乱码解决的方法
近期在写一个爬虫,目标站点是:http://zx.bjmemc.com.cn/.可能是为了防止被爬取数据,它给自身数据加了密. 用谷歌自带的抓包工具也不能捕获到数据. 于是下了Fiddler. ...
- python 使用xlsxwriter 写入数据时,当数据中链接的后面包含空格时(如:"http://*** "),导出问题打开报错
python 在使用 xlsxwriter组件写入数据时,当数据包含类似“http://*** /”数据时,导出的excel,打开时会提示如下错误: 没有查到相关的资料处理这个问题,可能原因为exce ...
- Android 从网络中获取数据时 产生部分数据乱码的解决
产生部分数据乱码的解决 标签: android部分中文乱码 2014-04-12 23:24 12366人阅读 评论(10) 收藏 举报 分类: [Android 基础](15) 版权声明:本文为博主 ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
- oracle插入数据时解决和旧数据id的冲突
我们在使用oracle创建一个主键的时候需要让他自增, 但是他跟mysql不同,需要创建序列,具体看下面: 可以删除之前创建的sequence,我们在重新创建一个: DROP SEQUENCE SJG ...
- springMVC返回json数据时date类型数据被转成long类型
在项目的过程中肯定会遇到ajax请求,但是再用的过程中会发现,在数据库中好好的时间类型数据:2017-05-04 17:52:24 在转json的时候,得到的就不是时间格式了 而是145245121这 ...
- easyui datagrid 没数据时显示滚动条的解决方法
今天解决了一个bug,因为datagrid有多列,可是当没有数据的时候,后面的列无法通过滚动条拉动来显示,比较麻烦,而需求要求没有数据也要拉动滚动条查看后面有什么列,一开始在网上找了一些资料,发现都不 ...
- 扩展:gridview 空数据时显示表头
2015年7月14日16:50:06 Gridview 默认展示数据时,若数据为空,则表格不显示,显示不美观. 针对此问题进行扩展: using System.Web.UI.WebControls; ...
随机推荐
- XSS一些总结
XSS一些总结 除了script以外大多标签自动加载触发JS代码大多用的都是on事件,以下标签都可以用下面的方法去打Cookie以及url等 常见标签 <img><input> ...
- celery task异步任务
业务端后台:通过python manage运行 运行用例时,用python manage运行时会卡,影响效率 celery task 本身自己也是个服务,异步处理case 异步:小明去给我买个东西,我 ...
- C语言:if条件写法
if 语句的判断条件中不是必须要包含关系运算符,它可以是赋值表达式,甚至也可以是一个变量,常量 例如: //情况① if(b){ //TODO: } //情况② if(b=5){ //情况① //TO ...
- 学习总结 NCRE二级和三级
NCRE二级C语言 证书 考试感想 2016年考的认证,5年过去了,"光阴荏苒真容易".趁着心有余力有余的时候,把一些个人的体会分享给大家,希望后来人能平稳前行. Windows ...
- 单细胞分析实录(17): 非负矩阵分解(NMF)代码演示
本次演示使用的数据来自2017年发表于Cell的头颈鳞癌单细胞文章:Single-Cell Transcriptomic Analysis of Primary and Metastatic Tumo ...
- Flask db init 抛出KeyError: 'migrate’这个问题
问题 目录下执行flask db init 结果 抛出KeyError: 'migrate'这个问题 ## 原因 初始化Migrate对象时没有加db 解决: appfactory.py import ...
- PhotoShop CC2015(64位)下载链接和破解教程
photoshop如今有cc和cs两种版本,之前出了一个cs的破解教程和扣圆形图,有很多朋友说cc比cs好用的多,希望出个cc的下载链接和破解教程,故推出2015pscc版破解教程和下载链接. 百度云 ...
- c++ 父类 子类 虚表占用内存空间情况
#include <iostream> using namespace std; class C {}; class A:public C { private: long a; long ...
- 构建前端第8篇之---Webstom搭建ES6运行环境
张艳涛 写于2021-1-22 一.在有webstorm和node.js前提下,安装全局的babel npm install babel-cli babel-eslint -g 二.在terminal ...
- idea 提示不能打开cmd.exe,idea 编译项目 CreateProcess error=740, 请求的操作需要提升 --->如何设置cmd以管理员身份运行
问题描述:idea 编译项目 idea 编译项目 CreateProcess error=740, 请求的操作需要提升 CreateProcess error=740, 请求的操作需要提升 全网搜索可 ...