mongodb - 从加密中排除嵌套字段 Mongoose 加密
问题描述
所以我正在使用一个名为mongoose-encryption的 npm 包,除了一件重要的事情之外,一切都很棒。我有一个名为报告的数组,其中有很多对象。每个对象都有一个唯一字段,称为report_id
事情是我需要根据该 ID 执行删除操作,但如果我对其进行加密,猫鼬显然无法找到它。为此,我排除了文档中所说的一些字段,但我显然不能排除嵌套字段,我尝试了这个:
usersSchema.plugin(encrypt,{secret:sigKey,excludeFromEncryption: ['username','reports.report_id']});
所以用户名被排除在加密之外,但没有reports.report_id
任何想法?
解决方案
[文档](https://www.npmjs.com/package/mongoose-encryption]说:
为了加密,从文档中删除相关字段,转换为 JSON,以 Buffer 格式加密,并在前面加上 IV 和插件版本,然后插入到文档的 _ct 字段中。Mongoose 在发送到 mongo 时会将 _ct 字段转换为二进制。
如果该reports
字段由 mongoose-encryption 加密,则它根本不会出现在存储在 MongoDB 中的文档中。
如果reports.report_id
在加密reports
字段时需要在查询中访问该字段的值,则需要将它们复制到未加密的数组中。
推荐阅读
- python - Python过滤器和映射json
- docker - 将 Schema-Registry Docker 容器连接到 AWS MSK
- c# - 在基类中创建工厂函数,但如果在其子类之一上调用它们则无法访问
- kotlin - 需要说明:类型不匹配需要:未找到:MyItem
- python-3.x - 在类中声明二维数组时出现名称错误
- javascript - 如何写入对象内的嵌套数组
- excel - 从第 2 行从左到右排序范围
- laravel - 如何运行从 cPanel 下载的 Laravel 项目?
- db2 - 尝试在 DB2 中使用 UDF 运行动态 sql
- javascript - 转换为对象并将属性添加到数组的对象