gpt4 book ai didi

couchdb - 多个 PouchDB 客户端实例与 CouchDB 服务器的实时同步

转载 作者:行者123 更新时间:2023-12-01 06:07:00 26 4
gpt4 key购买 nike

假设我有 1000 多个客户端,每个客户端都运行自己的本地 PouchDB 实例,其中包含特定于客户端的数据。我希望所有这些客户端都将他们的数据与 CouchDB 服务器同步,这样我就可以使用自己过去的数据从头开始重新初始化客户端的应用程序。

每个客户端,因此每个 PouchDB 实例,都包含客户端特定的数据。我希望所有客户端都将他们的数据同步到服务器,但是当涉及到服务器到客户端的同步时,我只想发回这些与给定客户端相关的数据库条目。

这样做的最佳策略是什么?

PouchDB article about filtered replication

There's no shame in creating a DB per user



然而 10 Things Developers Should Know about Couchbase

Try to use 5 or less buckets in Couchbase. Never more than 10.



Multi-tenancy with Couchbase Server似乎也证实了这一点:

Couchbase Server supports up to 10 buckets and that number can be dialed up, however the overhead of creating too many buckets drastically limits the density you can achieve.



除非我完全误解了某些东西,否则每个用户的存储桶(CouchDB 中的存储桶 == 数据库)不是一个选择。

或者,我可以为每个数据库实体添加一个用户的唯一 ID 并使用服务器过滤功能,但是 PouchDB documentation说:

Replicating only the user's documents via filtering might seem simplest, but filtering isn't a substitute for proper authentication.



那么首选的方法是什么?我是 PouchDB/CouchDB 的新手,所以我很可能在这里错过了一些概念。

最佳答案

我建议使用过滤器过滤复制,该过滤器检查请求中的 userCtxt 对象以对每个用户进行身份验证,并结合编写验证函数来检查当前用户是否有权更新文档:

过滤器示例:

function(doc, req) {
if (!req.userCtx.name) {
throw("Unauthorized!");
}
.....
}

验证函数示例:
"validate_doc_update": "function (newDoc, oldDoc, userCtx) {
if (newDoc.author != userCtx.name) {
throw({
forbidden: 'Only' + userCtx.name + ' may edit this document'
});
}
}"

来源: http://podefr.tumblr.com/post/30895595277/securing-couchdb-in-3-steps

关于couchdb - 多个 PouchDB 客户端实例与 CouchDB 服务器的实时同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com