标签: pouchdb

如何在复制过程中过滤数据并仅为用户提供自己的文档?

我需要在客户端同步来自CouchDB和PouchDB的服务器数据.每个用户都有自己的数据.当他在线时,这些数据正在更新.如何在复制过程中过滤数据并仅为用户提供自己的文档?这对我来说是安全问题.

replication couchdb pouchdb

8
推荐指数
2
解决办法
1979
查看次数

强制忽略由npm/yarn安装的一个依赖项的依赖项

我的nodejs项目使用了一些库.一个库pouchdb将尝试安装相当多的依赖项.有一个被调用leveldown,它将尝试从Internet下载Node.js标头,然后从头开始重建所有内容.其实我根本不需要leveldown.但他们的社区建议我私下分叉pouchdb并修改package.json以排除我不需要的任何依赖.

这是我对npm/yarn人的一般性问题.是否有可能阻止下载特定的库,在运行npm installyarn install

node.js npm pouchdb yarnpkg

8
推荐指数
1
解决办法
2129
查看次数

如果我使用PouchDB移动应用程序,是否必须用CouchDB替换Mysql?

目前,我们有一个使用mysql数据库的Web应用程序,可通过该数据库访问PHP.我们计划使用Ionic Framework具有离线访问权限的移动应用程序,并在用户通过移动设备上线时与网络应用程序同步.

我听说过http://pouchdb.com/

所以,现在如果我必须将此技术用于移动应用程序,我是否必须用现有mysql数据库替换CouchDB

php mysql couchdb pouchdb ionic-framework

7
推荐指数
1
解决办法
2674
查看次数

如何在打字稿中使用 pouchdb?

我正在尝试将 pouchdb 与 Typescript 一起使用。我无法链接到 pouchdb 模块。

import { PouchDB } from "pouchdb"
Run Code Online (Sandbox Code Playgroud)

报告它找不到模块 pouchdb,即使它在 node_modules 中。

我也找不到适合 pouchdb 的类型。

couchdb node.js node-modules pouchdb typescript

7
推荐指数
1
解决办法
7668
查看次数

向 CouchDB 添加 gzip 支持的推荐方法是什么?

我正在尝试设置一个 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 pouchdb

7
推荐指数
1
解决办法
610
查看次数

PouchDB Replication在复制时抛出错误

当我尝试使用我的本地复制远程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 @ …

couchdb google-chrome nginx pouchdb ubuntu-14.04

7
推荐指数
1
解决办法
215
查看次数

Django REST api 与 PouchDB 离线同步

我正在开发一个由多个客户端使用的应用程序,该应用程序的主要目标是在线使用。但是一个特定的要求是,它也应该能够离线工作仅适用于紧急情况下的单个客户端和短时间 - 最多 24 小时)。现在我使用 Django REST 框架作为后端和 Jquery/AJAX 前端用于 GET 和 PUT请求,这些请求在后端更新 PostgreSQL DB。现在互联网上的研究很少表明我应该在前端使用PouchDB和/或在后端使用CouchDB。但我的问题是:

  1. 真的有可能吗?
  2. 如果是,那么后端数据库应该使用哪个数据库?
  3. 当离线客户端在线时,我们如何同步在线生成的数据?
  4. 我们可以在客户端机器上缓存一些数据以实现离线可用性吗?
  5. 是否仍然可以将 PostgreSQL 用于后端?(我真的很想用它!)

django synchronization offline-caching pouchdb django-rest-framework

7
推荐指数
0
解决办法
708
查看次数

更新现有文档字段而不丢失 Couch DB 中的旧文档数据

这是我的 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": …

javascript database couchdb nosql pouchdb

7
推荐指数
1
解决办法
263
查看次数

更新文档时的pouchDB query()错误

假设我有这三个文件:

{ "_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同步.

这些是我做的步骤:

  1. 我同时将两个数据库同步.所以现在我的设备上有这个文档的最新版本.
  2. 我运行以下查询,然后我回复所有三个模板:

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)
  1. 我更新模板:云上的人.然后我再次更新它.因此,在没有同步到我的设备的情况下进行了2次修订.

  2. 我与我的设备同步.

  3. 现在,当我运行相同的查询时,我只返回我编辑的文档.这很奇怪,因为我没有触及任何其他文件.相同的视图返回云上的预期结果,但不返回设备上的预期结果.

返回

{"11111": true}
Run Code Online (Sandbox Code Playgroud)
  1. 但是,如果我执行以下代码,则所有模板将恢复正常,并且_rev云中的相同模板将显示在设备上.意味着同步成功并且视图变得混乱.

新代码

return device_db.allDocs({conflicts: …
Run Code Online (Sandbox Code Playgroud)

javascript couchdb cloudant pouchdb react-native

7
推荐指数
1
解决办法
219
查看次数

vite+svelte+pouchdb:未捕获类型错误:类扩展值 [object Object] 不是构造函数或 null

我正在尝试使用 Svelte + PouchDB 设置最低配置,并在浏览器中遇到上述错误。请参阅下面的步骤来重现该问题。

重现步骤:

  1. 使用 Svelte 模板创建一个简单的 Vite Scaffold 项目并验证它在浏览器中是否按预期工作
$ npm create vite@latest pouchdb-test -- --template svelte
$ cd pouchdb-test
$ npm install
$ npm run dev
Run Code Online (Sandbox Code Playgroud)
  1. 安装PouchDB(或pouchdb-browser,问题同样重现) $ npm install --save pouchdb

  2. 使用 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 svelte vite

7
推荐指数
1
解决办法
752
查看次数