首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PouchDB相对远程数据库(带有CouchDB / Cloudant)

PouchDB相对远程数据库(带有CouchDB / Cloudant)
EN

Stack Overflow用户
提问于 2017-06-16 11:41:14
回答 3查看 637关注 0票数 2

我正在创建一个CouchApp,并有一个关于远程数据库和创建PouchDB对象的问题。

  • CouchApp可访问htps://subdomain.website.com/
  • CouchDB实例位于htps://username.Cloudant.com/数据库上。
  • 我在数据库中使用重写规则。
  • 从username.cloudant.com/database/_design/client/_rewrite到subdomain.website.com有一个虚拟主机
  • 我不使用复制,只使用直接连接。

我目前使用以下方法创建一个新的PouchDB对象:

var db =新的PouchDB('htps://username.cloudant.com/database');

但我宁愿把它实例化为:

var db =新的PouchDB(‘/数据库’);

var db =新的PouchDB(“数据库”);

我的猜测是,PouchDB将其视为本地数据库,而不是远程数据库。我的想法正确吗?我怎样才能得到我想要的结果?我想删除URL的主机名,因为我希望保持所有的可移植性,并在其他服务器上复制它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-06-16 14:08:00

由于定义了vhost,所以可以使用以下解决方法:

代码语言:javascript
复制
var url = new URL(window.location.href);
var host = url.host;

var db = new PouchDB(host+"/database");
票数 2
EN

Stack Overflow用户

发布于 2020-07-23 09:59:13

我想出了办法)

我正在使用create-react-app,并且希望使用一个proxy指令,这样我就可以将所有pouchdb请求重定向到我的/couchdb1端点,并避免所有CORS问题。

所以你来吧:

代码语言:javascript
复制
const COUCHDB_ROOT = '/couchdb1';
const remoteDB = new PouchDB(COUCHDB_ROOT + '/userdb-626f62', {
  adapter: 'http',
  fetch: (url, opts) => {
    if (typeof url === 'string') {
      return PouchDB.fetch(COUCHDB_ROOT + url.split(COUCHDB_ROOT)[1], opts)
    } else {
      throw new Error('The url could be of a Request type.'); // TODO
    }
  },
  auth: {
    username: 'bob',
    password: 'bob',
  },
  skip_setup: true,
});
票数 1
EN

Stack Overflow用户

发布于 2017-06-16 13:56:44

我目前使用以下方法创建一个新的PouchDB对象: var db =新的PouchDB('htps://username.cloudant.com/database'); 但我宁愿把它实例化为: var db =新的PouchDB(“数据库”);

嗯,这不是个人喜好的问题,你可能需要一个远程数据库,一个本地数据库,或者两者都需要。

基本上,作为开发人员,您可能需要一个远程数据库:

代码语言:javascript
复制
const remoteDB=new PouchDB('https://username.cloudant.com/database')

此外,您可能需要一个本地数据库:

代码语言:javascript
复制
const localDB=new PouchDB('localDatabase')

然后,您可能需要sync远程和本地数据库。实际上,syncingPouchDB真正照亮的地方。例如,同步可能如下所示:

代码语言:javascript
复制
localDB.sync(remoteDB,{live:true,retry:true}).on('complete',()=>{
    console.log('sync done')
}).on('change',change=>{
    console.log('Something changed -> ',change)
}).on('paused',info=>{
    console.log('Sync paused -> ',info)
}).on('active',info=>{
    console.log('Sync is active again -> ',info)
}).on('error',err=>{
    throw new Error(err)
})

您可以通过继续往下读获取更多信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44588403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档