使用mongoose验证预先存在的mongodb集合

时间:2015-02-02 18:22:30

标签: node.js mongodb mongoose

我正在尝试对预先存在的集合运行mongoose模式验证。使用mongoose创建集合,因此文档通常是正确的,但如果模式以某种方式更改,添加/删除字段,更改类型等等。我必须编写脚本以手动对集合进行更改。

我认为更灵活/可重用的解决方案是在整个集合中运行模式验证。然而,这似乎并不像我想象的那么容易。

我的问题是,目前,验证运行的唯一时间是文档创建和使用save()方法的更新。保存注入$set,使其不会覆盖文档,只验证正在写入的字段。因此,例如,如果字段foo已从字符串更改为默认值为0的数字,则需要找到包含foo中字符串的所有文档并将其设置为默认值。

我正在检索所有文档,迭代每个文档并调用.save(),如果存在类型错误,我使用err.path删除有问题的字段并尝试再次保存,重复使用没有错误。我认为肯定会将任何与模式不匹配的字段设置为默认值,但save()不会覆盖文档,因此如果数据库中存在某个字段但未保存的文档中存在该字段,则会离开它一个人没有任何反应。

mongooses更新方法有一个覆盖选项,但更新没有运行验证,所以我被卡住了。

0 个答案:

没有答案