PouchDB基础系列(一)

写在前面:

  公司的一个项目是用到PouchDB,这是我第一次接触这个库,为了上手项目,所以对PouchDB的基础进行了学习,这个系列是简单记录PouchDB的常用API。

什么是PouchDB?

  上图是官网对PouchDB的介绍,大概而言:PouchDB是一个浏览器数据库,开发者可以通过PouchDB在本地保存数据,并且这些数据的在脱机的情况也可以使用,同时,PouchDB可以在Node.js中运行。最后,PouchDB是使用JavaScript编写的开源项目。

  此外,PouchDB是受Apache CouchDB所启发,当其运行在浏览器或者Node.js时,应用程序在联机时将与CouchDB服务器或者兼容服务器进行同步

一、安装PouchDB与使用

1、安装下载

 (1)从官网下载PouchDB或者通过CDN服务:https://pouchdb.com/download.html

  注:在生产环境建议下载压缩版,在开发环境下载未压缩版,以供开发人员进行调试

 (2)通过npm下载

npm install --save pouchdb

  同时,官网也提供了另外一个操作,假如仅在浏览器使用PouchDB,则可以使用下面的npm命令

npm install --save pouchdb-browser

2、使用

  如果是通过第一种方法下载,在html文件引入js文件,并且在script标签中就可以使用PouchDB

<script src="//cdn.jsdelivr.net/npm/pouchdb@7.2.1/dist/pouchdb.min.js"></script>
<script>
  var db = new PouchDB('my_database');
</script>

  注:上面是通过CDN服务进行使用

  通过npm包下载使用方法,在需要使用的页面中进行require应用

var PouchDB = require('pouchdb');
var db = new PouchDB('my_database');

二、关于PouchDB的API

API概述

  PouchDB是具有异步API,支持callback回调,Promises以及异步功能,官网建议是使用Promise,我个人也是建议使用Promise,在现在的前端开发中,Promise常见的解决异步操作的解决方法。同时,大部分的API格式

db.doSomething(args..., [options], [callback])

  其中,options配置项以及callback回调是可选的

Callbacks

  Callbacks使用标准Node.js的写法

function(error,result){
    /*
        ...
        ...
    */
}    

  当没有错误的时候,undefined将作为error的值

Promises

  当没有指定使用Callbacks时,则认API会默认返回Promise对象。

  假如要对PouchDB使用自定义的Promise,则必须在加载PouchDB之前先重新定义全局的Promise对象

<script>window.Promise = MyCustomPromiseLibrary;</script>
<script src="path/to/pouchdb.js"></script>

  在上述代码中,MyCustomPromiseLibrary为我自行定义的Promise,则我必须在scrpit脚本加载PouchDB前覆盖掉全局的Promise

Async function

  可以在PouchDB使用基于Promise的async/await关键字,当然前提是项目是支持ES 7的或者使用了Babel这样的转译工具

async function myFunction(){
    /*
        ...
        ...
    */
}    

三、PouchDB常见的API

1、Create a database 创建数据库

new PouchDB([name], [options])

  这个操作会创建一个新的数据库或者打开已有的数据库,如果name的值为一个URL时,如“http://domain.com/dbname”,则此时PouchDB将充当远程的CouchDB实例的数据库,否则此时将使用已存在的后端语言来创建本地数据库

  name:name是必需的。

  options:

    本地数据库的options可选参数

    auto_compaction:启动自动压缩,在每次更改数据库后默认调用compact()方法,默认值为false

    adapter:可选'idb', 'leveldb',  'http',当未指定时,PouchDB会判断当前浏览器是否支持并且优先使用IndexedDB到webSQL

    revs_limit:指定要跟踪的旧版本,假如指定的值为一个较低的数值,PouchDB可能无法通过复制确认新修订版本是否与当前任何修订版本相关,这可能导致冲突。默认值为1000

    deterministic_revs:使用MD5哈希创建文档的唯一修订号。如果设置为false版本号是随机的UUID。默认为true

    远程数据库的options可选参数

    fetch(url, opts):拦截或者重写HTTP请求,可以通过添加或修改与HTTP请求相关的请求头或者选项,然后返回fetch标准的新Promise

    auth.username + auth.password:通过使用格式为:http://user:pass@host/name或者uth.username + auth.password选项来指定HTTP身份验证的数据库

    skip_setup:在创建时候PouchDB判断数据库是否存在,如果不存在,则尝试创建它,设置为true跳过此设置。

  注:在indexedDB中,PouchDB将使用_pouch_作为内部数据库的名称前缀,请不要创建具有相同前缀的数据库

    当PouchDB运行在Node.js上时,所给的任何其他选项都将传递给request

    当adapter使用'leveldb'时(Node.js上默认为leveldb),所给的任何选项都会传递到levelup

  创建案例:

var db = new PouchDB('dbname');
// or
var db = new PouchDB('http://localhost:5984/dbname');

  注:PouchDB默认端口为5984

参考链接:https://pouchdb.com/api.html

由于机翻,如有错误请指正,第一时间修改

posted @ 2020-09-16 15:47  你生气时好丑  阅读(855)  评论(0编辑  收藏  举报