我的目标是确保远程沙发数据库中的所有数据都将被加密。当我从pouch-transform文档中跟踪此示例时,我的数据在同步后未在远程端点上加密,
pouch.transform({
incoming: function (doc) {
encrypt(doc);
},
outgoing: function (doc) {
decrypt(doc);
}
});
当我在传出时加密它,但在这种情况下我的数据也在本地加密。我在这里做错了,在远程数据库中加密数据不是加密点吗?所以实现这一目标的唯一方法是创建set / get包装器并加密它们?我可以在拨出电话中以某种方式检测文件目的地吗?
答案 0 :(得分:1)
是不是要在远程数据库中加密数据的加密点?
没有。正如package description:
中所述在文档存储到数据库之前和之后,将转换函数应用于文档。
换句话说,它只会修改静止的数据。
此插件对发送到CouchDB /从CouchDB发送的数据完全没有影响 - 仅限于数据存储在PouchDB内部的方式。
如果您想在CouchDB中加密文档,则需要在应用程序层执行此操作。也就是说,自己加密数据,并将其存储在文档中或作为加密形式的附件存储。
答案 1 :(得分:0)
我也有问题。因此,我添加了一个replicating
标志以在复制时通过包装的函数:https://github.com/pouchdb/pouchdb/pull/7774
并修改了pouch-transform
功能,以将选项传递给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;
},
};