原文: http://zetcode.com/javascript/pouchdb/

PouchDB 教程展示了如何在 JavaScript 中使用 PouchDB。 本教程中的 PouchDB 代码示例可在数据库中插入,删除和删除文档。

PouchDB

PouchDB 是 CouchDB 的 JavaScript 实现。 PouchDB 可以在浏览器中,在 Node 中本地使用,也可以通过 HTTP 协议远程使用。

默认情况下,PouchDB 随附用于浏览器的 IndexedDB 适配器,Node.js 中的 LevelDB 适配器和用于远程数据库的 CouchDB 适配器。

Apache CouchDB 是面向文档的开源 NoSQL 数据库。 它以 Erlang 语言实现,并使用 JSON 存储数据,将 JavaScript 作为其查询语言以及用于 API 的 HTTP。

PouchDB 创建数据库

为了创建一个新的数据库,我们实例化了一个新的PouchDB对象。 如果数据库已经存在,它将创建对数据库的引用。

  1. const db = new PouchDB('mydb');

我们创建一个新的mydb数据库。 根据运行的位置,它将在浏览器,Node 或远程 CouchDB 数据库服务器中创建一个新数据库。

浏览器中的 PouchDB

我们展示了如何在浏览器中使用 PouchDB。

public/index.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <script src="js/pouchdb-7.0.0.min.js"></script>
  11. <script>
  12. const db = new PouchDB('users');
  13. db.info()
  14. .then((info) => {
  15. console.log(info);
  16. })
  17. </script>
  18. </body>
  19. </html>

我们下载了pouchdb的缩小版,并将其包含在script标签中。 然后,我们创建一个新的users数据库,并将有关该数据库的一些信息写入控制台。 要检查创建的数据库,我们转到浏览器开发者工具的存储检查器。

PouchDB 教程 - 图1

图:Chrome 中的存储浏览器

这是 Google Chrome 浏览器中的存储浏览器。 只要选项卡存在,数据就是持久的。

在 Node 上安装 PouchDB

我们在 Node 上安装 PouchDB。

  1. $ nodejs -v
  2. v9.11.2

我们使用 Node 版本 9.11.2。

  1. $ npm init -y
  2. $ npm i pouchdb

我们创建一个新的 Node 项目并安装 PouchDB。

PouchDB 创建文档

使用put()方法创建一个新的 PouchDB 文档。

insert_doc.js

  1. const PouchDB = require('pouchdb');
  2. const db = new PouchDB('mydb');
  3. doc = {
  4. _id: new Date().toISOString(),
  5. name: 'Peter',
  6. age: 23,
  7. occupation: 'designer'
  8. };
  9. db.put(doc).then((res) => {
  10. console.log("Document inserted OK");
  11. }).catch((err) => {
  12. console.error(err);
  13. });

该示例在本地创建一个新的mydb数据库。

  1. doc = {
  2. _id: new Date().toISOString(),
  3. name: 'Peter',
  4. age: 23,
  5. occupation: 'designer'
  6. }

这是一个要插入数据库的新文档。 我们提供了_id

  1. db.put(doc).then((res) => {
  2. console.log("Document inserted OK");
  3. }).catch((err) => {
  4. console.error(err);
  5. });

该文档已插入数据库。

  1. $ ls mydb/
  2. 000022.ldb 000024.ldb 000025.log CURRENT LOCK LOG LOG.old MANIFEST-000023

mydb目录中本地创建一个新数据库。

或者,我们可以使用post()创建一个新文档。 使用post()时,会自动为我们生成_id

insert_doc2.js

  1. const PouchDB = require('pouchdb');
  2. const db = new PouchDB('mydb');
  3. doc = {
  4. name: 'Peter',
  5. age: 23,
  6. occupation: 'designer'
  7. };
  8. db.post(doc).then((res) => {
  9. console.log("Document inserted OK");
  10. }).catch((err) => {
  11. console.error(err);
  12. });

在示例中,我们使用post()创建一个新文档。 为文档提供自动生成的_id,例如b781309e-0423-4b3e-96ad-238cf50debce

PouchDB 获取文档

要从数据库检索文档,我们使用get()函数。

get_doc.js

  1. const PouchDB = require('pouchdb');
  2. const db = new PouchDB('mydb');
  3. db.get('b781309e-0423-4b3e-96ad-238cf50debce').then((doc) => {
  4. console.log(`${doc.name}, ${doc.age}, ${doc.occupation}`);
  5. }).catch((err) => {
  6. console.error(err);
  7. });

我们从数据库中检索文档。 我们为get()方法提供了_id

  1. $ node get_doc.js
  2. Peter, 23, designer

这是输出。

PouchDB 删除文档

要从数据库中删除文档,我们使用remove()函数。

get_doc.js

  1. const PouchDB = require('pouchdb');
  2. const db = new PouchDB('mydb');
  3. db.get('b781309e-0423-4b3e-96ad-238cf50debce').then((doc) => {
  4. return db.remove(doc);
  5. }).then((res) => {
  6. console.log("The document has been removed");
  7. }).catch((err) => {
  8. console.error(err);
  9. });

为了删除文档,我们必须先使用get()进行获取,然后再使用remove()进行删除。

PouchDB bulkDocs

使用bulkDocs()方法,我们可以在单个批量操作中将许多文档写入数据库。

create_users.js

  1. const PouchDB = require('pouchdb');
  2. const db = new PouchDB('users');
  3. doc1 = { _id: 'peter43@gmail.com', name: 'Peter', age: 23, occupation: 'designer' };
  4. doc2 = { _id: 'sofia23@gmail.com', name: 'Sofia', age: 44, occupation: 'teacher' };
  5. doc3 = { _id: 'paul54@gmail.com', name: 'Paul', age: 25, occupation: 'driver' };
  6. docs = [doc1, doc2, doc3];
  7. db.bulkDocs(docs).then((res) => {
  8. console.log("Documents inserted OK");
  9. }).catch(() => {
  10. console.error(err);
  11. });

在示例中,我们创建一个新的数据库用户,并使用bulkDocs()插入三个文档。

PouchDB allDocs

allDocs()是另一个 PouchDB 批量方法; 一步即可检索许多文档。

all_docs.js

  1. const PouchDB = require('pouchdb');
  2. const db = new PouchDB('users');
  3. db.allDocs({ include_docs: true, descending: true }, (err, doc) => {
  4. doc.rows.forEach(e => {
  5. console.log(e.doc);
  6. });
  7. }).catch((err) => {
  8. console.error(err);
  9. });;

在示例中,我们从users数据库中获取所有文档。

  1. $ node all_docs.js
  2. { name: 'Sofia',
  3. age: 44,
  4. occupation: 'teacher',
  5. _id: 'sofia23@gmail.com',
  6. _rev: '1-80b0fba21acf487fc20ac499e928acd7' }
  7. { name: 'Peter',
  8. age: 23,
  9. occupation: 'designer',
  10. _id: 'peter43@gmail.com',
  11. _rev: '1-182869c3c446731fa8b6106910b87d8e' }
  12. { name: 'Paul',
  13. age: 25,
  14. occupation: 'driver',
  15. _id: 'paul54@gmail.com',
  16. _rev: '1-31bfc20f010c9a6127cb44d6621cee5c' }

这是输出。

PouchDB 更新文档

在下面的示例中,我们显示了如何更新文档。

update_doc.js

  1. const PouchDB = require('pouchdb');
  2. const db = new PouchDB('users');
  3. db.get('sofia23@gmail.com').then((doc) => {
  4. doc.age = 45;
  5. return db.put(doc);
  6. }).then(() => {
  7. return db.get('sofia23@gmail.com');
  8. }).then((doc) => {
  9. console.log(doc);
  10. }).catch((err) => {
  11. console.error(err);
  12. });

为了更新文档,我们对其进行检索,修改其属性并将其放回数据库。

在本教程中,我们使用了 PouchDB 数据库。 我们创建了一些代码示例,这些示例演示了如何创建与 PouchDB 交互的 JavaScript 程序。

您可能也对以下相关教程感兴趣: JQuery 教程Moment.js 教程从 JavaScript 中的 URL 读取 JSONJavaScript 贪食蛇教程Node Sass 教程Lodash 教程