因此,我正在使用一个名为mongoose-encryption的npm软件包,除了一件重要的事情外,其他一切都很棒。我有一个称为报表的数组,其中有很多对象。每个对象都有一个称为report_id
的唯一字段,这是我需要根据该ID执行删除操作,但是如果我对其加密,猫鼬显然找不到它。为此,我排除了像文档所说的某些字段,但是我显然不能排除嵌套字段,我尝试过这样:
usersSchema.plugin(encrypt,{secret:sigKey,excludeFromEncryption: ['username','reports.report_id']});
因此,用户名不包括在加密中,但不包括reports.report_id
有什么想法吗?
答案 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>