我需要在客户端同步来自CouchDB和PouchDB的服务器数据.每个用户都有自己的数据.当他在线时,这些数据正在更新.如何在复制过程中过滤数据并仅为用户提供自己的文档?这对我来说是安全问题.
目前,我们有一个使用mysql数据库的Web应用程序,可通过该数据库访问PHP.我们计划使用Ionic Framework具有离线访问权限的移动应用程序,并在用户通过移动设备上线时与网络应用程序同步.
所以,现在如果我必须将此技术用于移动应用程序,我是否必须用现有mysql数据库替换CouchDB?
我正在尝试将 pouchdb 与 Typescript 一起使用。我无法链接到 pouchdb 模块。
import { PouchDB } from "pouchdb"
Run Code Online (Sandbox Code Playgroud)
报告它找不到模块 pouchdb,即使它在 node_modules 中。
我也找不到适合 pouchdb 的类型。
我正在尝试设置一个 CouchDB 部署,该部署需要能够返回 gzip 响应(12mb 未压缩响应与 400kb 压缩响应)。我还需要 SSL 支持和 CORS。
我之前曾使用 Apache 作为反向代理,但我发现它对于连接不良的大型复制来说并不可靠。我的偏好是直接为 CouchDB 提供服务,无需任何代理,并且我们目前正在 CouchDB 内提供 SSL。
我已经成功设置了这个代理:http://broken-by.me/tag/accept-encoding-gzip/,它使用节点和连接模块(加上cors和压缩)。它非常简单并且运行良好。然后,每当我需要 gzip 响应时,我只需将请求发送到不同的端口。但这意味着我会失去这些请求的 SSL。我应该弄清楚如何将 SSL 添加到节点吗?还是人们在一切前面都推荐ngingx作为代理,然后使用nginx来做gzip、cors和ssl?生产 CouchDB 部署的最佳实践是什么?
当我尝试使用我的本地复制远程couchdb(on ubuntu 14.04- 64 bit)时pouchdb,我遇到了这个奇怪的错误.我的couchdb通过nginx并运行代理https.从客户端到nginx的流量是ssl,而nginx到couchdb是简单的http.在couchdb中启用了Cors请求.Nginx配置与couchdb推荐最相似.从数据库同步工作正常,但在通过Chrome版本54.0.2840.100(64位)进行调试时遇到错误.
以下是错误的完整堆栈跟踪.
raven.min.js:2 Error: There was a problem getting docs.
at finishBatch (http://localhost:8100/lib/pouchdb/dist/pouchdb.js:6410:13)
at processQueue (http://localhost:8100/lib/ionic/js/ionic.bundle.js:27879:28)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:27895:27
at Scope.$eval (http://localhost:8100/lib/ionic/js/ionic.bundle.js:29158:28)
at Scope.$digest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:28969:31)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:29197:26
at completeOutstandingRequest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:18706:10)
at http://localhost:8100/lib/ionic/js/ionic.bundle.js:18978:7
at d (http://localhost:8100/lib/raven-js/dist/raven.min.js:2:4308) undefineda.(anonymous function) @ raven.min.js:2(anonymous function) @ ionic.bundle.js:25642(anonymous function) @ ionic.bundle.js:22421(anonymous function) @ angular.min.js:2processQueue @ ionic.bundle.js:27887(anonymous function) @ ionic.bundle.js:27895$eval @ ionic.bundle.js:29158$digest @ ionic.bundle.js:28969(anonymous function) @ ionic.bundle.js:29197completeOutstandingRequest @ ionic.bundle.js:18706(anonymous function) @ ionic.bundle.js:18978d @ …
我正在开发一个由多个客户端使用的应用程序,该应用程序的主要目标是在线使用。但是一个特定的要求是,它也应该能够离线工作(仅适用于紧急情况下的单个客户端和短时间 - 最多 24 小时)。现在我使用 Django REST 框架作为后端和 Jquery/AJAX 前端用于 GET 和 PUT等请求,这些请求在后端更新 PostgreSQL DB。现在互联网上的研究很少表明我应该在前端使用PouchDB和/或在后端使用CouchDB。但我的问题是:
django synchronization offline-caching pouchdb django-rest-framework
这是我的 Couch DB 文档
{"people": [{"id": 1,"dept_id": 1,"user": "A",},{"id": 2,"dept_id": 1,"user": "B",},{"id": 3,"dept_id": 1,"user: "C",}]}
Run Code Online (Sandbox Code Playgroud)
用户 A 在 pouch DB 中将他的 dept_id 更改为 3
{"people": [{"id": 1,"dept_id": 3,"user": "A",},{"id":2 ,"dept_id": 1,"user": "B",},{"id": 3,"dept_id": 1,"user": "C",}]}
Run Code Online (Sandbox Code Playgroud)
用户 B 在 pouch DB 中将他的 dept_id 更改为 4
{"people": [{"id": 1,"dept_id": 1,"user": "A"},{"id":2 ,"dept_id": 4,"user": "B"},{"id": 3,"dept_id": 1,"user": "C"}]}
Run Code Online (Sandbox Code Playgroud)
如果 A 和 B 将数据复制到 Couch DB ,则 Couch 文档更新为
{"people": [{"id": 1,"dept_id": 1,"user": "A"},{"id":2 ,"dept_id": 4,"user": "B"}, {"id": 3,"dept_id": 1,"user": "C"}]}
但我预期的输出
{"people": [{"id": …
假设我有这三个文件:
{ "_id": "11111", "type": "template", "name": "person" }
{ "_id": "22222", "type": "template", "name": "place" }
{ "_id": "33333", "type": "template", "name": "thing" }
Run Code Online (Sandbox Code Playgroud)
我有一个云数据库,然后我有一个设备与该数据库的pouchDB同步.
这些是我做的步骤:
码
var template_obj = {};
return device_db.query('filters/templates')
.then((templates) => {
for (let t of templates.rows) templates_obj[t.id] = true;
return templates_obj;
});
Run Code Online (Sandbox Code Playgroud)
过滤器/模板
function (doc) {
if(doc.type == "template")
emit(doc._id);
}
Run Code Online (Sandbox Code Playgroud)
返回
{ "11111": true, "22222": true, "33333": true }
Run Code Online (Sandbox Code Playgroud)
我更新模板:云上的人.然后我再次更新它.因此,在没有同步到我的设备的情况下进行了2次修订.
我与我的设备同步.
返回
{"11111": true}
Run Code Online (Sandbox Code Playgroud)
_rev云中的相同模板将显示在设备上.意味着同步成功并且视图变得混乱.新代码
return device_db.allDocs({conflicts: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Svelte + PouchDB 设置最低配置,并在浏览器中遇到上述错误。请参阅下面的步骤来重现该问题。
重现步骤:
$ npm create vite@latest pouchdb-test -- --template svelte
$ cd pouchdb-test
$ npm install
$ npm run dev
Run Code Online (Sandbox Code Playgroud)
安装PouchDB(或pouchdb-browser,问题同样重现)
$ npm install --save pouchdb
使用 PouchDB 创建数据库(下面的第 2 行和第 3 行是我添加的。其他行按原样存在。)
# src/lib/Counter.svelte
<script>
import PouchDB from "pouchdb"; // <--- or "pouchdb-browser" if that is installed
const db = new PouchDB('myDB'); // <--- Add this line too
let count = 0
const increment = () => {
count …Run Code Online (Sandbox Code Playgroud) pouchdb ×10
couchdb ×7
javascript ×2
node.js ×2
cloudant ×1
database ×1
django ×1
mysql ×1
nginx ×1
node-modules ×1
nosql ×1
npm ×1
php ×1
react-native ×1
replication ×1
svelte ×1
typescript ×1
ubuntu-14.04 ×1
vite ×1
yarnpkg ×1