首页 > 解决方案 > 从加密中排除嵌套字段 Mongoose 加密

问题描述

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

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

所以用户名被排除在加密之外,但没有reports.report_id 任何想法?

标签: mongodbmongoose

解决方案


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

为了加密,从文档中删除相关字段,转换为 JSON,以 Buffer 格式加密,并在前面加上 IV 和插件版本,然后插入到文档的 _ct 字段中。Mongoose 在发送到 mongo 时会将 _ct 字段转换为二进制。

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

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


推荐阅读