标签: pouchdb

添加cache.manifest时,AngularJS/PouchDB应用程序停止与CouchDB同步

我有一个使用AngularJS编写的单页Web应用程序.它使用PouchDB复制到CouchDB服务器并且工作正常.

当我尝试通过添加cache.manifest将网页转换为可脱机时,问题就来了.突然间,所有复制任务都会抛出错误并停止工作,无论是脱机还是在线工作.

在Chrome中它只是说"GET ... myCouchIP/myDB /?_ nonce = CxVFIwnEJeGFcyoJ net :: ERR_FAILED"

在Firefox中它也会抛出错误,但提到请求被阻止 - 尝试启用CORS.

根据PouchDB设置页面的说明,在远程CouchDB上启用CORS.另外,它没有使用cache.manifest工作正常(即它对我的桌面,服务器和VM之间的所有不同的IP地址非常满意 - 它是原型,因此此时没有域名).

顺便说一句,此时我没有使用任何类型的身份验证.管理员方生效.

那么在添加cache.manifest时会发生什么变化?线索感激不尽.提前致谢.

app.js

var app = angular.module('Assets', ['assets.controllers', 'ngRoute']);

app.config(['$routeProvider', function($routeProvider) {
    $routeProvider.
    when('/', {
        controller: 'OverviewCtrl',
        templateUrl: 'views/overview.html'
    }).
    when('/new', {
        controller: 'NewMachineCtrl',
        templateUrl: 'views/machineForm.html'
    }).
    otherwise({redirectTo: '/'});
}]);
Run Code Online (Sandbox Code Playgroud)

controller.js

var _control = angular.module('assets.controllers', ['assets.services']);

_control.controller('OverviewCtrl', ['$scope', 'Machine', function($scope, Machine) {
    var promise = Machine.getAll();

    promise.then(function(machineList) {
        $scope.machines = machineList;
    }, function(reason) {
        alert('Machine list is empty: ' + reason);
    }); …
Run Code Online (Sandbox Code Playgroud)

couchdb offline-caching angularjs pouchdb

5
推荐指数
1
解决办法
3267
查看次数

复制时的 PouchDB/CouchDB 序列计数器

我正在将一个新创建的 pouchdb (3.3.1)实时同步到一个已建立的 (iris) couchdb。

初始复制成功发生(暂停事件触发)。

如果我info()在本地执行,我会得到362的 update_seq 。如果我info()在遥控器上这样做,它会显示4201的 update_seq 。

我认为这对我来说很有意义:本地数据库没有修订——只有叶子(即数据库中有 362 个叶子),而远程数据库序列计数器反映了自首次创建以来所做的所有历史更改。

我的问题是:如何以编程方式确定两个数据库之间序列计数器的初始“偏移量”是多少?我特别希望能够衡量初始复制的进度。

couchdb pouchdb

5
推荐指数
1
解决办法
2894
查看次数

如何将参数传递给 Express post HTTP 方法?

我正在构建一个简单的 REST API(使用PouchDBVue.js)。现在,我可以创建projects几个字段:

服务器.js:

var express = require('express')
var PouchDB = require('pouchdb')
var app = express()
var db = new PouchDB('vuedb')

app.post('/projects/new', function(req, res) {
  var data = {
    'type': 'project',
    'title': '',
    'content': '',
    'createdAt': new Date().toJSON()
  }
  db.post(data).then(function (result) {
    // handle result
  })
})
Run Code Online (Sandbox Code Playgroud)

客户端.js:

// HTML

<input type="text" class="form-control" v-model="title" placeholder="Enter title">
<input type="text" class="form-control" v-model="content" placeholder="Enter content">
<button class="btn btn-default" v-on:click="submit">Submit</button>

// JS

submit () {
  this.$http.post('http://localhost:8080/projects/new').then(response => { …
Run Code Online (Sandbox Code Playgroud)

javascript rest express pouchdb vue.js

5
推荐指数
1
解决办法
5405
查看次数

同步 PouchDB 和 Couchbase 同步网关 - CORS 错误

我需要帮助将 PouchDB 与 Couchbase 同步网关同步。

我不断收到指向 CORS 问题的以下错误,但我已经根据他们的文档为 CORS 配置了 Couchbase 同步网关 (CSG)。

XMLHttpRequest cannot load http://localhost:4985/test-database/.
No 'Access-Control-Allow-Origin'header is present on the requested
resource. Origin 'http://localhost:3000' is therefore not 
allowed access.
Run Code Online (Sandbox Code Playgroud)

我已经根据 CSG 文档尝试了以下配置文件:

http://developer.couchbase.com/documentation/mobile/1.2/develop/guides/sync-gateway/configuring-sync-gateway/config-properties/index.html

{
  "log": ["HTTP+"],
  "CORS": {
    "origin":["http://localhost:3000"],
    "loginOrigin":["http://localhost:3000"],
    "headers":["Content-Type"],
    "maxAge": 1728000
  },
  "databases": {
    "test-database": {
      "server": "walrus:",
      "users": { "GUEST": {"disabled": false, "admin_channels": ["*"] } }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过 Couchbase 博客中的其他配置文件,但它们都不起作用!对此的任何帮助将不胜感激!

couchdb couchbase pouchdb couchbase-sync-gateway

5
推荐指数
1
解决办法
1060
查看次数

如何构建多用户 pouchdb/coucdb 应用程序和身份验证

我已经阅读了关于这个主题的大约 10 个相关的 stackoverflow 问题,它们都分散在一个类似的问题上......我想围绕一个虚构的“todo”应用程序简化我的问题。我正在学习编码 (javascript),但遇到了障碍。我让我学习的“激情”项目非常复杂,解决了个人旅行问题。我希望有一天我能回报!

这是虚构的应用程序:

这个应用程序将使用 Ionic 2 构建。离线第一个应用程序将让用户登录并创建他们自己的“待办事项”列表。这些应该可以通过他们的手机和桌面访问并同步。用户还应该能够与社区共享他们的待办事项列表,社区可以复制其他人的“待办事项”列表。该应用程序还应该能够查询用户最喜欢做什么,例如“刷牙”或“查看我的蝙蝠侠收藏”。用户还应该能够使用任何社交网络登录(Facebook、Twitter、谷歌等)。

1) 你如何构建 pouchdb/couchdb 数据库?对沙发底座/云台开放。

它是每个用户的数据库吗?是每个角色的数据库吗?它是一个适合所有人的数据库吗(我知道这存在安全问题)?

2) 假设您将每个客户端 pouchdb 数据库合并到一个大型数据库中进行查询是否正确?

3) 你必须使用 NodeJS 后端或服务器吗?

4) 可以使用 Auth0 或 Stormpath 进行身份验证吗?

我已经研究了大约 5 天,但我无法弄清楚。我真的很感谢所有的帮助。

编辑:我认为这很好地解释了除了我认为可以与 Bluemix 一起使用的身份验证之外我还需要什么?

https://cloudant.com/blog/replication-with-cloudant-pt-3/#.V38hxpMrJE6

想法?

couchdb nosql cloudant pouchdb ionic-framework

5
推荐指数
1
解决办法
1316
查看次数

使用CouchDB处理多个数据库的最佳实践

我选择了在ouchdb中为每个用户提供一个数据库。(所有数据库都是完全独立的,它们之间不需要聚合)现在我的应用程序正在增长,我有成千上万个数据库。

couchDb不能同时保持100个以上的打开的db。提高性能,是否更好

  1. 保留一个沙发床实例并增加打开的数据库的数量
  2. 启动另一个沙发数据库服务器实例,并在两者之间分配用户。

综上所述,问题是:

如果您具有独立的数据DB,则最好是水平扩展还是垂直扩展?

database couchdb nosql pouchdb

5
推荐指数
1
解决办法
409
查看次数

CouchDB/PouchDB 中的任意文档排序

我正在使用 CouchDB/PouchDB 构建可以被视为幻灯片应用程序的东西:每个“幻灯片”都是它自己的 Couch 文档,幻灯片可以重新排序或删除,并且可以在现有幻灯片之间或在开头或幻灯片结束。一个幻灯片可以从一张幻灯片增加到 10,000 张幻灯片,所以我对空间和时间效率很敏感。

我首先制作了幻灯片创建/编辑功能,完全低估了跟踪幻灯片排序的难度。这很难,因为每个幻灯片文档的顺序完全独立于幻灯片文档本身,也就是说,我无法按时间或文档中包含的某个数字对其进行排序。我在 StackOverflow 上看到了许多关于如何跟踪关系数据库中的排序的问题:

但所有这些都涉及

  1. 使用浮点辅助键进行重新排序/创建/删除,并定期对索引进行规范化(即,假设两个文档是 order-index 1.0 和 2.0,然后中间的第三个文档获取键 1.5,然后第四个获取 1.25,…… , 直到 ~31 个文档被插入其中,并且您会遇到浮点精度问题);
  2. 一种链表方法,其中幻灯片文档有一个previousnext字段,其中包含文档的任一侧的主键;
  3. 为每个文档重新排序/插入/删除更新所有文档的非常简单的方法。

这些都不适合 CouchDB:#1 在 SQL 或 CouchDB 中会产生大量的偶然复杂性。#2 不可靠,因为缺乏原子事务(CouchDB 可能会用它的新文档更新前一个文档,next但同时另一个客户端可能已经更新了新的下一个文档,因此更新新的下一个文档将失败并显示 409,并且您的链表被保留在不一致的状态)。出于同样的原因,#3 是完全行不通的。


我正在评估的一种面向 CouchDB 的方法将创建一个仅包含幻灯片排序的文档:它可能包含一个主键到订单号的哈希对象以及一个将订单号转换为-的数组主键,并在幻灯片重新排序/插入/删除时更新此对象。这样做的缺点是 Couch 会为每次订单更改(重新排序/插入/删除)保留一份这个潜在大文档的副本——CouchDB 不支持压缩单个文档,我不想在我的文件上运行压缩整个数据库,因为我喜欢保留每个幻灯片文档的历史记录。另一个缺点是,在数千张幻灯片之后,每次对排序的更改都涉及将整个对象(数百 KB)从 PouchDB/客户端传输到 Couch。

这种方法的一个调整是创建第二个数据库来保存这个订购文档并打开它的自动压缩。跟踪两个数据库连接需要做更多的工作,而且我最终必须将大量数据放到网络上,但我将有一种强大的方式来在 CouchDB 中订购文档。


所以我的问题是:CouchDB 人们通常如何存储文档的顺序?更有经验的 CouchDB 人员能否看到我上面概述的方法中的任何缺陷?

database couchdb pouchdb

5
推荐指数
1
解决办法
593
查看次数

如何同步CouchDB和PostgreSQL

我们有一个基于RoR构建的Web应用程序,它使用了postgresql,现在我们必须将其与移动应用程序集成,该移动应用程序必须能够管理离线模式,因此我们需要在Web应用程序和移动应用程序之间同步信息。

问题是,如果我将数据存储在postgresql上,并且需要使用couchdb和pouchdb进行脱机同步,该怎么办?

谢谢!!

couchdb ruby-on-rails pouchdb ionic-framework

5
推荐指数
2
解决办法
2939
查看次数

CustomPouchError

我正在尝试将我的本地数据库同步到这样的远程数据库:

const DB_NAME = "my_db";
const REMOTE_DB_URL ="http://<admin>:<password>/<ip-address>:5984/my_db";

const localDB = new PouchDB(DB_NAME);
const remoteDB = new PouchDB(REMOTE_DB_URL);

localDB.sync(remoteDB)
.then(() => {
  console.log("Sync done");
})
.catch(err => {
  console.log(err);
});
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

message:"getCheckpoint rejected with "
name:"unknown"
result:{ok: false, start_time: Mon Dec 18 2017 14:14:03 GMT+0100 (CET), docs_read: 0, docs_written: 0, doc_write_failures: 0, ...}
status: 0
Run Code Online (Sandbox Code Playgroud)

本地数据库工作正常,但是当尝试复制/同步到远程时,总是得到上面的错误

我在用

  • React Native 0.50.0
  • pouchdb-react-native:6.3.4
  • 远程数据库是CouchDB 2.1.1

couchdb pouchdb react-native

5
推荐指数
1
解决办法
285
查看次数

PouchDB和React-Native没有复制.to()但.from()正在工作

由于某些原因,在我的应用程序上创建的文档没有显示在我的远程couchdb数据库上。

我正在使用以下

import PouchDB from 'pouchdb-react-native'

let company_id = await AsyncStorage.getItem('company_id');
let device_db = new PouchDB(company_id, {auto_compaction: true});
let remote_db = new PouchDB('https://'+API_KEY+'@'+SERVER+'/'+company_id, {ajax: {timeout: 180000}});

device_db.replicate.to(remote_db).then((resp) => {

    console.log(JSON.stringify(resp));
    console.log("Device to Remote Server - Success");
    return resp;

}, (error) => { 

  console.log("Device to Remote Server - Error");
  return false; 

});
Run Code Online (Sandbox Code Playgroud)

我得到一个成功的回应:

{
  "ok":true,
  "start_time":"2018-05-17T15:19:05.179Z",
  "docs_read":0,
  "docs_written":0,
  "doc_write_failures":0,
  "errors":[

  ],
  "last_seq":355,
  "status":"complete",
  "end_time":"2018-05-17T15:19:05.555Z"
}
Run Code Online (Sandbox Code Playgroud)

当我转到远程数据库时,不会显示可在应用程序上搜索和获取的document_id。

  • 有没有我没有考虑的东西?
  • 我有什么办法可以检查为什么会发生这种情况?
  • 当我在Ionic中使用相同的脚本方法并且切换到React-Native时,这种方法有效。

注意:当我.from()从远程设备获取数据时,我会获取数据。由于某种原因,它只是没有将数据推出

javascript couchdb pouchdb react-native pouchdb-adapter-localstorage

5
推荐指数
0
解决办法
361
查看次数