如何在调用Mongoose save()方法更新行时停止生成版本记录
解决mongoose-version在save时停止生成版本记录的问题
我来帮你搞定这个问题!你之前尝试的写法没生效,大概率是两个小问题:用错了调用对象,或者参数值搞反了。下面给你详细的正确操作方式:
首先,mongoose-version插件本身就支持在调用save()时临时抑制版本记录的生成,但注意必须是针对文档实例调用save,而不是直接用collection,并且参数要设置为true才会生效(你之前写的false是默认行为,不会抑制)。
正确示例代码
// 1. 先获取要更新的文档实例 const targetDoc = await YourModel.findById('文档ID'); // 2. 修改文档内容 targetDoc.yourField = '新的内容'; // 3. 调用save时传入抑制版本的选项 await targetDoc.save({ suppressVersionIncrement: true });
这样执行后,这次save操作就不会生成新的版本记录了。
额外注意事项
- 如果你的
mongoose-version版本比较旧,可能需要用noVersion作为参数名(不过这个是比较早期的用法,现在主流版本都是用suppressVersionIncrement),如果上面的代码没生效,可以试试替换成{ noVersion: true }。 - 确保你在模型初始化时正确配置了
mongoose-version插件,比如:const yourSchema = new mongoose.Schema({ /* 你的字段定义 */ }); // 初始化版本控制插件 yourSchema.plugin(version, { collection: 'yourModelVersions', // 版本存储的集合名 // 其他全局配置... }); const YourModel = mongoose.model('YourModel', yourSchema);
这样应该就能解决你的问题啦!
内容的提问来源于stack exchange,提问作者Abtisam Ahmed
相关产品推荐
相关产品推荐

