PouchDB 教程
最后修改于 2023 年 10 月 18 日
PouchDB 教程展示了如何在 JavaScript 中使用 PouchDB。本教程中的 PouchDB 代码示例在数据库中插入、删除和删除文档。
PouchDB
PouchDB 是 CouchDB 的 JavaScript 实现。PouchDB 可以在浏览器中使用,也可以在本地 Node 中使用,还可以通过 HTTP 协议远程使用。
默认情况下,PouchDB 附带了用于浏览器的 IndexedDB 适配器、Node.js 中的 LevelDB 适配器以及用于远程数据库的 CouchDB 适配器。
Apache CouchDB 是一个面向文档的开源 NoSQL 数据库。它用 Erlang 语言实现,使用 JSON 存储数据,JavaScript 作为其查询语言,并使用 HTTP 作为 API。
PouchDB 创建数据库
要创建一个新的数据库,我们实例化一个新的 PouchDB
对象。如果数据库已经存在,它会创建一个对该数据库的引用。
const db = new PouchDB('mydb');
我们创建一个新的 mydb 数据库。根据运行位置的不同,它会在浏览器、Node 或远程 CouchDB 数据库服务器中创建一个新的数据库。
浏览器中的 PouchDB
我们展示了如何在浏览器中使用 PouchDB。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script src="js/pouchdb-7.0.0.min.js"></script> <script> const db = new PouchDB('users'); db.info() .then((info) => { console.log(info); }) </script> </body> </html>
我们下载了 pouchdb
的最小化版本,并将其包含在 script
标签中。然后我们创建一个新的 users
数据库,并将有关它的信息写入控制台。要检查创建的数据库,我们转到浏览器开发工具的存储检查器。

这是 Google Chrome 中的存储浏览器。只要标签页存在,数据就会持久保存。
Node 上 PouchDB 的安装
我们在 Node 上安装 PouchDB。
$ npm init -y $ npm i pouchdb
我们创建一个新的 Node 项目并安装 PouchDB。
PouchDB 创建文档
使用 put
方法创建一个新的 PouchDB 文档。
const PouchDB = require('pouchdb'); const db = new PouchDB('mydb'); doc = { _id: new Date().toISOString(), name: 'Peter', age: 23, occupation: 'designer' }; db.put(doc).then((res) => { console.log("Document inserted OK"); }).catch((err) => { console.error(err); });
该示例在本地创建一个新的 mydb
数据库。
doc = { _id: new Date().toISOString(), name: 'Peter', age: 23, occupation: 'designer' }
这是一个要插入数据库的新文档。我们提供一个 _id
。
db.put(doc).then((res) => { console.log("Document inserted OK"); }).catch((err) => { console.error(err); });
文档被插入到数据库中。
$ ls mydb/ 000022.ldb 000024.ldb 000025.log CURRENT LOCK LOG LOG.old MANIFEST-000023
一个新的数据库在本地创建在 mydb
目录中。
或者,我们可以使用 post
创建一个新文档。当使用 post
时,_id
会自动为我们生成。
const PouchDB = require('pouchdb'); const db = new PouchDB('mydb'); doc = { name: 'Peter', age: 23, occupation: 'designer' }; db.post(doc).then((res) => { console.log("Document inserted OK"); }).catch((err) => { console.error(err); });
在本例中,我们使用 post
创建一个新文档。该文档被赋予一个自动生成的 _id
,例如 b781309e-0423-4b3e-96ad-238cf50debce
。
PouchDB 获取文档
要从数据库中检索文档,我们使用 get
函数。
const PouchDB = require('pouchdb'); const db = new PouchDB('mydb'); db.get('b781309e-0423-4b3e-96ad-238cf50debce').then((doc) => { console.log(`${doc.name}, ${doc.age}, ${doc.occupation}`); }).catch((err) => { console.error(err); });
我们从数据库中检索一个文档。我们向 get
方法提供一个 _id
。
$ node get_doc.js Peter, 23, designer
PouchDB 删除文档
要从数据库中删除文档,我们使用 remove
函数。
const PouchDB = require('pouchdb'); const db = new PouchDB('mydb'); db.get('b781309e-0423-4b3e-96ad-238cf50debce').then((doc) => { return db.remove(doc); }).then((res) => { console.log("The document has been removed"); }).catch((err) => { console.error(err); });
为了删除一个文档,我们必须首先使用 get
获取它,然后使用 remove
删除它。
PouchDB bulkDocs
使用 bulkDocs
方法,我们可以在一次批量操作中将许多文档写入数据库。
const PouchDB = require('pouchdb'); const db = new PouchDB('users'); doc1 = { _id: 'peter43@gmail.com', name: 'Peter', age: 23, occupation: 'designer' }; doc2 = { _id: 'sofia23@gmail.com', name: 'Sofia', age: 44, occupation: 'teacher' }; doc3 = { _id: 'paul54@gmail.com', name: 'Paul', age: 25, occupation: 'driver' }; docs = [doc1, doc2, doc3]; db.bulkDocs(docs).then((res) => { console.log("Documents inserted OK"); }).catch(() => { console.error(err); });
在本例中,我们创建一个新的 users 数据库,并使用 bulkDocs
插入三个文档。
PouchDB allDocs
allDocs
是另一个 PouchDB 批量方法;它在一个步骤中检索许多文档。
const PouchDB = require('pouchdb'); const db = new PouchDB('users'); db.allDocs({ include_docs: true, descending: true }, (err, doc) => { doc.rows.forEach(e => { console.log(e.doc); }); }).catch((err) => { console.error(err); });;
在本例中,我们从 users
数据库中获取所有文档。
$ node all_docs.js { name: 'Sofia', age: 44, occupation: 'teacher', _id: 'sofia23@gmail.com', _rev: '1-80b0fba21acf487fc20ac499e928acd7' } { name: 'Peter', age: 23, occupation: 'designer', _id: 'peter43@gmail.com', _rev: '1-182869c3c446731fa8b6106910b87d8e' } { name: 'Paul', age: 25, occupation: 'driver', _id: 'paul54@gmail.com', _rev: '1-31bfc20f010c9a6127cb44d6621cee5c' }
PouchDB 更新文档
在下面的例子中,我们展示了如何更新一个文档。
const PouchDB = require('pouchdb'); const db = new PouchDB('users'); db.get('sofia23@gmail.com').then((doc) => { doc.age = 45; return db.put(doc); }).then(() => { return db.get('sofia23@gmail.com'); }).then((doc) => { console.log(doc); }).catch((err) => { console.error(err); });
为了更新一个文档,我们检索它,修改其属性,并将其放回数据库。
来源
在本文中,我们使用了 PouchDB 数据库。我们创建了几个代码示例,展示了如何创建与 PouchDB 交互的 JavaScript 程序。