PouchDB与节点模块有关

时间:2017-03-12 10:06:30

标签: node.js azure amazon-web-services pouchdb cloudant

我有一个奇怪的问题,我相信我只是忽视了某些东西或者没有正确理解Node module.exports机制。

我正在尝试创建一个包含我的PouchDB连接的数据库服务,而其他服务可能只需要数据库服务。出于性能原因,我还将远程数据库复制到本地数据库。

数据库服务看起来像这样。

database.service.js

var __remote = new PouchDB(config.connectionstring.datastore);
var __local = new PouchDB("pouch-local-database");

var __replicationHandle = __startReplication();

function __startReplication() {
  return __local.sync(__remote, {
    live: true,
    retry: true
  }).on('change', function (change) {
    logger.info('Database Sync New Data');
  }).on('paused', function (info) {
    logger.info('Database Sync Paused');
  }).on('active', function (info) {
    logger.info('Database Sync Active');
  }).on('error', function (err) {
      logger.error('Database Sync Error', err);
  });
}

function __resync(){
  __replicationHandle.cancel();
  __local.destroy()
  .then(function(data){
    __local = new PouchDB("pouch-local-database");
    __replicationHandle = __startReplication();
  })
  .catch(function(err){
    logger.error('Database Destroy Error', err);
  });
}   

module.exports = {
    data : __local,
    resync: __resync
};

我得到的两个问题是:

  1. 当我在本地托管它并且应用响应非常好时,复制就像一个魅力,但是当我将它上传到我的Azure Web App(免费层)时,复制不起作用。而且似乎我无法使用本地数据库。由于我的记录器正在写入wwwroot目录中的文件,因此我认为这不是一个权限问题。
  2. 当我执行 resync 方法时,取决于数据库的所有其他服务停止工作,从而导致"数据库被销毁"错误。这是没有意义的,因为我在销毁之后分配了一个新的Pouch。
  3. 我考虑用以下内容替换module.exports:

    module.exports = {
        data : new PouchDB("pouch-local-database"),
        resync: __resync
    };
    

    谢谢你们!我忽视了一些显而易见的事情!

0 个答案:

没有答案