关于Mongoose 验证器(Validator)对更新操作无效的问题

Mongoose在4.0版本以前,验证器对update、$set、$unset操作无效,但可通过实例方法进行数据验证。用户需手动找到文档并调用实例方法来触发验证。从4.0版本开始,可以在更新操作中通过设置字段值为undefined来激活验证器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mongoose 在 4.0 版本之前,验证器不支持update()findByIDAndUpdate()findOneAndUpdate(), 但可以支持实例方法 document.save()。所以可以先找到该条数据,然后调用save()方法来实现:

Model.findOne({_id: modelId}, (err, model) => {
	model.name = 'newName'
	model.save((err, savedModel) => {
		// ERROR HANDLER
	})
})

Mongoose 4.0 之后,可以在update()方法中通过设置runValidators字段的值为 true 来触发验证器:

Model.update(
	{ _id: modelId },
	{ $set: { name: 'newName' } },
	{ 
		upsert: true,
		runValidators: true
	},
	err => {
		// ERROR HANDLER
	}
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值