标签: pouchdb

是否可以使用React-Native创建脱机的第一个应用程序?

根据我的理解,离线第一个应用程序需要一种方法来判断用户是否已连接; 如果没有,它会在本地存储更改并在线时与远程服务器同步.

我发现使用Web应用程序执行此操作的方法是在客户端上使用pouchdb与连接到couchdb数据库的api进行通信.或者使用Firebase.

是否可以使用React-Native具有类似的功能?也许通过使用pouchdb-async-storage适配器.还有其他替代方案可用于本地远程数据同步吗?

offline couchdb pouchdb react-native

9
推荐指数
1
解决办法
4247
查看次数

用于Electron应用程序的本地基于文件的数据库

我们正致力于通过Electron提供基于Web和跨平台桌面解决方案的应用程序.

由于客户的要求,桌面客户端无法利用"云"来存储数据; 所有数据都应存储在本地计算机中,或者更好的是,用户应该可以选择将数据库/数据文件保存在外部HDD上,以便同一本地网络上的另一个用户可以使用相同的数据文件.

我们一直在研究NeDB,PouchDB等,但所有这些都使用浏览器本身的Web SQL或IndexedDB来存储数据.从理论上讲,NeDB可以使用文件系统,但这似乎只适用于Node Webkit应用程序.

另一种选择当然是MongoDB,但它需要在Web服务器上设置站点.看看我们的用户如何在自己的机器上设置它,这将仅适用于一个用户,但会使他们很难共享数据(注意:假设用户几乎没有技术知识).

  • 有没有办法强制NeDB将数据保存在文件而不是浏览器内的数据库中?
  • 或者,是否有人知道基于文件的紧凑型数据库与电子/节点配合良好?

我们最好使用NoSQL数据库,但也会考虑基于文件的SQL数据库的选项.

mongodb pouchdb nedb electron

9
推荐指数
1
解决办法
4344
查看次数

将PouchDB脱机同步到PostgreSQL

我试图通过使用pouchDB使我的Web应用程序在脱机模式下工作.但我使用的后端数据库服务器是PostgreSQL(NoSQL).当我的应用程序重新上线时,我无法找到将我的PouchDB数据同步到postgreSQL的方法.任何人都可以请你知道如何做到这一点

postgresql offlineapps indexeddb pouchdb

9
推荐指数
1
解决办法
3795
查看次数

处理离线优先移动应用程序(PouchDB)的大数据集的最佳方法

所以我使用Ionic v2并使用Pouch进行移动开发,使用sqlite.来自REST API的数据包含以下内容:

{
  "record-id": "2332255",
  "record-name": "record-ABC-XTY",
  "record-items": [
    {
      "item-id": "456454",
      "item-name": "item-XADD",
      "category": "Cat1",
      "subcategory": "Subcat1",
      "location": "LocationXYZ",
      "owner": "Person1",
      "data-rows": [
        {
          "row-name": "sampleRowName1",
          "row-value": "ABC-XASS"
        },
        {
          "row-name": "sampleRowName2",
          "row-value": "ABC-XASS"
        }
      ]
    },
    {
      "item-id": "654645",
      "item-name": "item-BNSSA",
      "category": "Cat2",
      "subcategory": "Subcat2",
      "location": "LocationABC",
      "owner": "Person2",
      "data-rows": [
        {
          "row-name": "sampleRowName1",
          "row-value": "ABC-XASS"
        },
        {
          "row-name": "sampleRowName2",
          "row-value": "ABC-XASS"
        }
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

现在您可以看到,记录项可能包含100,000个或更多项(est json大小:32mb).现在我迷失了我应该采取的方法.优化的数据处理至关重要,我不知道PouchDB方法更好.以下是我的一些想法.

  1. 将整个JSON数据保存为PouchDB的一个条目.但我担心它会在检索时占用大量内存,并会使该应用程序变慢.
  2. 通过一个小袋条目记录对记录项进行分块并单独检索它.我不确定这在整体性能方面是否更好,但PouchDB记录可能会更大(?).

此外,还将进行排序,获取所有数据(仅显示_ids和几个字段以显示所有结果的列表)和搜索.

couchdb cordova pouchdb ionic2

9
推荐指数
1
解决办法
731
查看次数

PouchDB的顺序唯一ID

PouchDB最佳实践建议是使用PUT而不是POST创建新文档(类似于rdbms中的行),主要是因为后者生成随机ID,这使得后续数据排序效率低下.PUT另一方面,需要提供用户生成的唯一ID.

我有点困惑PouchDB似乎没有提供开箱即用的功能.那么,生成唯一的顺序ID(类似于PostgreSQL的序列)的最佳方法是什么?我可以使用类似的东西maxID,但在我看来,主要问题是确保在我确定maxID和实际成功插入记录之间没有其他人插入记录.

建议?

pouchdb

9
推荐指数
1
解决办法
1427
查看次数

使用localstorage存储大量对象的最佳实践

目前我正在尝试使用localStorage存储大量相同类型的对象,我感到有些困惑.

一种思维方式是将所有对象存储在数组中.但是对于单个对象的每次读/写,我需要对整个数组进行反序列化/序列化.

另一种方法是将每个对象的密钥直接存储在localStorage中.这将使访问每个对象变得更容易,但我担心将存储的对象数量(数万).此外,获取所有对象将需要迭代整个localStorage!

我想知道哪种方式会更好?是否值得尝试更复杂的客户端数据库,如PouchDB?

javascript html5 local-storage pouchdb

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

离子框架应用程序脱机工作并与mongoDB同步数据

我正在开发离子框架中的应用程序并使用MongoDB作为数据库.我想在离线工作我的应用程序并将数据同步到我的数据库.我发现PouchDB可用作本地存储并与CouchDB同步.但我也发现,没有办法将PouchDB与MongoDB同步.是否还有其他本地存储可以脱机工作并与MongoDB同步?

offline sync mongodb pouchdb ionic

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

typeof XService不能分配给'FactoryProvider'类型.物业'提供'缺失

NgModule在Ionic 2移动应用程序中有一个Angular 2 ,定义如下:

@NgModule({
  declarations: [
    MyApp,
    HomePage,
  ],
  imports: [
    IonicModule.forRoot(MyApp)
  ],
  bootstrap: [IonicApp],
  entryComponents: [
    MyApp,
    HomePage,
  ],
  providers: [{provide: ErrorHandler, useClass: IonicErrorHandler}, VatRatesDbService]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

并以这种方式定义服务:

import { Injectable } from '@angular/core';
import * as PouchDB from 'pouchdb';

@Injectable()
export class VatRatesDbService {

  private _db;

  private constructor() {
    this._db = new PouchDB('rates.db', { adapter: 'websql' });
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,我在运行时收到以下错误:

类型'typeof VatRatesDbService'不能分配给'FactoryProvider'类型.'typeof VatRatesDbService'类型中缺少属性'provide'.

pouchdb ionic2 angular

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

强制忽略由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
查看次数

Android上的Chrome:IndexedDB的授权配额突然几乎为0

最近Android Chrome的IndexedDB配额管理有变化吗?我在Ionic 3 Cordova应用程序中使用带有适配器IndexedDB的PouchDB.在过去的6个月里,它进展顺利.但是在过去的5天内,我收到的关于数据未在应用中正确加载的投诉显着增加.我的应用只需要3-4 MB的数据.这是我目前所知道的:

  • 问题仅发生在内部存储器上磁盘空间不足的情况下(即使应用程序安装在SD卡上)
  • 受影响的设备几乎总是只有16GB的内部磁盘空间,并且似乎一直都是满的
  • 释放磁盘空间可以解决问题
  • 当设备运行低于150-250MB左右时,IndexedDB 的授权配额似乎有一个明显的截止.如果释放额外的100-200MB,则授予的配额突然跳升到50MB或更多
  • 最近Chrome或Android出现了这个问题,因为我的应用最近没有收到更新,甚至影响了只有几KB数据的新用户.

我还怀疑也许人们在最后几天拍摄了更多的照片,因为天气非常好,导致可用磁盘空间减少,因此报告的错误数量激增.但我仍然觉得这是一个奇怪的解释.

其他人在他们的应用中发现了类似的问题 除了切换到Cordova-SQLite之外的任何解决方案?

更新2018-05-03:

我想了几件事:

  • 设备几乎总是需要1 GB以上的免费内部存储空间.500MB已经不够用了
  • 如果您计划使用PouchDB迁移到SQLite,请阅读此问题的注释.附件可能存在问题.
  • 如果您正在使用Ionic Storage(基于LocalForage),它将在您安装插件后自动切换到SQLite.在我的情况下,这导致数据库错误,我不得不切换drivers为Ionic的存储:driverOrder: ['localstorage', 'indexeddb', 'sqlite', 'websql']

android google-chrome indexeddb cordova pouchdb

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