Encryption 与邮袋转换加密和复制混淆

Encryption 与邮袋转换加密和复制混淆,encryption,couchdb,pouchdb,Encryption,Couchdb,Pouchdb,我的目标是确保远程沙发数据库中的所有数据都将被加密。当我在Pocky transform文档中遵循此示例时,我的数据在同步后未在远程端点加密 pouch.transform({ incoming: function (doc) { encrypt(doc); }, outgoing: function (doc) { decrypt(doc); } }); 当我在输出端加密时,它会加密,但在本例中,我的数据

我的目标是确保远程沙发数据库中的所有数据都将被加密。当我在Pocky transform文档中遵循此示例时,我的数据在同步后未在远程端点加密

pouch.transform({
      incoming: function (doc) {
        encrypt(doc);
      },
      outgoing: function (doc) {
        decrypt(doc);
      }
    });
当我在输出端加密时,它会加密,但在本例中,我的数据也在本地加密。我在这里做错了什么,加密的目的不是在远程数据库中加密数据吗?所以实现这一点的唯一方法是创建set/get包装器并在其中加密?我是否可以在传出呼叫中检测文档目的地

加密的目的不是要在远程数据库中加密数据吗

否。如以下文件所述:

对存储在数据库中前后的文档应用转换函数

换句话说,它只修改静止的数据

这个插件对发送到CouchDB或从CouchDB发送的数据没有任何影响,只是数据存储在PockDB本身中


如果您也想在CouchDB中加密文档,则需要在应用程序层进行加密。也就是说,自己加密数据,并将其存储在文档中或以加密形式作为附件。

我也遇到了这个问题。我不想在复制时转换数据,因此我侵入并添加了一个复制标志,以便在复制时通过包装函数:

并修改了Pocket transform Pacake以将选项传递给outcoming回调:

{
  // decrypt it here.
  outgoing: async (doc, args: IPouchDBWrapperArgs, type: TransformPouchType) => {
    const {options} = args;
    if (!options.replicating) {
      doc = await this.decryptDoc(doc, options);
    }
    return doc;
  },
};


非常感谢你