从加密猫鼬加密中排除嵌套字段

时间:2020-05-10 19:43:24

标签: mongodb mongoose

因此,我正在使用一个名为mongoose-encryption的npm软件包,除了一件重要的事情外,其他一切都很棒。我有一个称为报表的数组,其中有很多对象。每个对象都有一个称为report_id的唯一字段,这是我需要根据该ID执行删除操作,但是如果我对其加密,猫鼬显然找不到它。为此,我排除了像文档所说的某些字段,但是我显然不能排除嵌套字段,我尝试过这样:

usersSchema.plugin(encrypt,{secret:sigKey,excludeFromEncryption: ['username','reports.report_id']});

因此,用户名不包括在加密中,但不包括reports.report_id 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

[document](https://www.npmjs.com/package/mongoose-encryption]说:

要进行加密,请从文档中删除相关字段,将其转换为JSON,以Buffer格式加密,并以IV和插件版本作为前缀,然后将其插入文档的_ct字段。发送到mongo时,猫鼬会将_ct字段转换为Binary。

如果reports字段是通过mongoose-encryption加密的,则它根本不会出现在MongoDB中存储的文档中。

如果在加密reports.report_id字段时需要reports字段的值可在查询中访问,则需要将它们复制到未加密的数组中。 / p>