标签: pouchdb

'连续'对PouchDB replicate()意味着什么?

根据PouchDB replicate()文档,可以添加一个continuous选项Pouch.replicate():

如果为true,则开始订阅第一个数据库中的更改并将其复制到第二个数据库.

我明白这意味着什么,但它是如何运作的?我看过代码,但很难理解'订阅'是如何完成的.

couchdb pouchdb

2
推荐指数
1
解决办法
914
查看次数

从 Couchdb 返回用户特定数据

背景:我有一个 mysql 数据库,我将把它移到 couchdb 中,该数据库中有一些表、“书籍”和“用户”。我通过登录表单登录到 Web 应用程序,当前在 php 脚本中发布用户名和密码,然后让用户登录并将 php 会话写入该用户的用户表。现在,当用户请求书籍时,我 a) 确保 php 会话对用户有效,然后使用登录的用户 ID 获取用户可以查看的书籍。

问题:您将如何在 couchdb 中复制这种特定于用户的记录查询?我假设 couchdb 的全部意义在于能够说http://somesite.com/couchdb/getBooks/并且该 db 端点返回书籍。

也许我只需要在最后传递一个 sessionid?http://somesite.com/couchdb/getBooks/?s=123123但是我从哪里获得会话?嗯。

任何谈论这个的方向或文章都会很棒。

php jquery couchdb pouchdb

2
推荐指数
1
解决办法
533
查看次数

PouchDB - 手动管理冲突

是否可以管理来自客户端的同步冲突?

我的意思是,当pouchDB执行同步并检测到冲突时,是否有可能获得本地文档PouchDB正在尝试同步和CouchDB doc的最新版本?如果我可以获得这两个文档,我可以将它们显示给用户,他可以选择保留哪个版本...

couchdb pouchdb

2
推荐指数
1
解决办法
1728
查看次数

PouchDb 通过 Id 匹配正则表达式获取所有文档

我想获取 id 与正则表达式匹配的所有文档。

例如,我有以下文档 ID:

p0
p0/e0
p1
p1/e0
Run Code Online (Sandbox Code Playgroud)

我怎样才能只得到 p0 和 p1 ?正则表达式将是 /^p[0-9]+$/

目前我可以执行两个请求,但我只想使用一个:

This.db.allDocs({
    include_docs: false
}).then(function(result){

    // Find all ids matching /^p[0-9]+$/
    var iDoc = result.rows.length;
    while(iDoc--){
        if(result.rows[iDoc].id.match(/^p[0-9]+$/)){
            projectsIds.push(result.rows[iDoc].id);
        }
    }

    // Get all documents with ids matching /^p[0-9]+$/
    This.db.allDocs({
        include_docs: true,
        keys: projectsIds
    }).then(function(result) {
        var iProject = result.rows.length;
        var docs = [];
        while (iProject--) {
            docs[iProject] = result.rows[iProject].doc;
        }
        projects.resolve(docs);

    });

});
Run Code Online (Sandbox Code Playgroud)

javascript pouchdb

2
推荐指数
1
解决办法
4460
查看次数

Pouchdb中的多个数据集合

在Pouchdb中,什么是处理多个数据集合的最佳方法?我的意思是,例如,我需要多个待办事项列表,而不是简单的待办事项列表,例如:待办事项,工作待办事项,社区待办事项和生态待办事项.

我应该将它全部放在一个数据库中,并在每个文档中使用一个键来确定它属于哪个列表?或者我应该使用不同的数据库?在我的应用程序中,用户将能够自由地创建和删除这些数据集合(或示例中的待办事项列表).

谢谢你,Marcio Moreira

pouchdb

2
推荐指数
1
解决办法
1377
查看次数

从pouchdb数据库中读取关系的最有效方法是什么

我在电子应用程序上使用pouchDb.在传递给pouchDb之前,数据存储在postgres数据库中.在某些情况下,要弄清楚如何以文档方式构建数据并不难.

我主要担心的是关系.例如:

我有数据类型项目,项目有很多事件.现在我在每个事件上都有一个名为project_id的字段.因此,当我想要获得ID为'project/1'的项目的事件时,我会这样做

_db.allDocs({
   include_docs: true,
   startkey: 'event',
   endkey: 'event\uffff'
}).then(function(response){
   filtered = _.filter(response['rows'], function(row){
      return row['doc']['project_id'] == 'project/1'
   });
   result = filtered.map(function(row){
      return row['doc']
   })
});
Run Code Online (Sandbox Code Playgroud)

我已经读过这allDocs是性能最好的API,但是,在这种情况下是否有更方便的视图?

另一方面,当我显示包含所有项目的列表时,每个项目都需要显示它具有的事件数.在这种情况下,我似乎必须再次运行allDocs,include_docs: false以便计算项目所具有的事件数.

有观点会改善这种情况吗?

另一方面,我正在考虑在Project文档中创建一个包含所有事件ID的数组,以便我可以轻松计算它有多少事件.在这种情况下,我应该使用allDocs吗?有没有办法将ID数组传递给allDocs?或者更好的是在该数组上使用循环并为每个id调用get(id)?

这种方式比第一种更有效吗?

谢谢!

database couchdb document-oriented-db pouchdb

2
推荐指数
1
解决办法
1126
查看次数

有没有一种方法可以在两个pouchdb实例之间进行同步?

我正在尝试构建一个包含以下内容的拓扑:

  • 通过局域网连接的两个桌面运行本机应用程序。

  • 同一应用的网络版本。

台式机只能间歇性地连接到Internet,因此本机应用程序和Web应用程序都需要具有单独的数据存储,这些数据存储在联机时会同步。

为此,我发现了ouchdb,它似乎是理想的候选人。我正在Electron上构建桌面应用程序,因此我考虑与其一起使用pouchdb并在联机时将其与服务器服务器上的couchdb同步。

但是问题是,这两个运行带有pouchdb的Electron应用程序的台式机将需要通过LAN彼此同步。pouchdb是否提供与远程pouchdb同步的功能?我只看到同步袋和沙发的文档。

https://pouchdb.com/guides/databases.html

我真的是数据库之间同步的概念的新手。Dunno,如果我要提出明显的(或显然不可能的)问题。感谢帮助。

couchdb nosql pouchdb

2
推荐指数
1
解决办法
762
查看次数

使用过滤复制同步 pouchdb

我使用 pouchdb 和 couchDb 作为我的离线第一个带有 react 的移动应用程序的数据库。

https://pouchdb.com/2015/04/05/filtered-replication.html

基于以上,就像我配置了 pouchdb 并与 couchdb 同步。我正在做基于用户的过滤。当用户注销并再次登录时,db 值可用。做到这一点的最佳设计方法是什么?

有什么例子可以参考吗?

configurePouchdb(user) {
var db = new PouchDB('dbname', {adapter: 'websql'});

 var serverSideFilter = {
        _id: "_design/app",
        filters: {
            "by_user": function (doc, req) {
                return doc._id === '_design/app' || (doc.userId != undefined && doc.userId === req.query.userId);
            }.toString()
        }
    };
    db.put(serverSideFilter).then(function (doc) {
        // design doc created!
    }).catch(function (err) {
        // if err.name === 'conflict', then
        // design doc already exists
    });
  db.sync('http://127.0.0.1:5984/dbname', {
        live: true,
        retry: true, …
Run Code Online (Sandbox Code Playgroud)

couchdb pouchdb reactjs

2
推荐指数
1
解决办法
2200
查看次数

显示pouchdb中的总行数

我在pouchdb中有一些数据,我想在pouchdb中显示总行数,我该怎么办?

angular.module("pouchapp", ["ui.router"])

.run(function($pouchDB) {
    $pouchDB.setDatabase("dbinfo");
    //console.log($pouchDB.length); //show total rows in pouchdb   
});

.service("$pouchDB", ["$rootScope", "$q", function($rootScope, $q) {
    var database;

    this.setDatabase = function(databaseName) {
        database = new PouchDB(databaseName);
    }
}]);
Run Code Online (Sandbox Code Playgroud)

pouchdb

2
推荐指数
1
解决办法
2821
查看次数

当revs_limit大于0时,PouchDB不同步删除

我有一个本地的pouchDB任务。直到我尝试设置与IBM Cloudant noSQL的同步之前,它都运行良好。到目前为止,主要的问题在于remove()方法,我这样编写:

$(document).on("click","#taskList li .delete", function(){

    db.remove(id,rev);
    refreshTasks();

});
Run Code Online (Sandbox Code Playgroud)

当关闭同步后,该方法可以完美工作,但是一旦我激活以下各行的同步,就不会从本地和远程删除任务。我正在运行PouchDB与以下代码同步:

db.sync(remote_db, {
  live: true,
  retry: true
}).on('change', function (change) {
  // yo, something changed!
}).on('paused', function (info) {
  // replication was paused, usually because of a lost connection
}).on('active', function (info) {
  // replication was resumed
}).on('error', function (err) {
  // totally unhandled error (shouldn't happen)
});
Run Code Online (Sandbox Code Playgroud)

我的数据库就是这样创建的:

var db = new PouchDB('tasks', {revs_limit: 1, auto_compaction: true});
Run Code Online (Sandbox Code Playgroud)

现在,当我创建revs_limit为0的数据库时,它将再次工作。

可能会发生什么?

couchdb pouchdb

2
推荐指数
1
解决办法
294
查看次数