PouchDB - Краткое руководство

В этой главе содержится краткое введение в PouchDB, а также его функции и принципы работы.

Что такое PouchDB?

PouchDB - это открытый исходный код in-browser database APIнаписано на JavaScript. Он создан по образцу Couch DB & minuss; база данных NoSQL. Используя этот API, мы можем создавать приложения, которые работают офлайн и онлайн. Он внутренне использует WebSQL и IndexedDB для хранения данных.

Как это работает?

В PouchDB, когда приложение находится в автономном режиме, данные хранятся локально с помощью WebSQL и IndexedDB в браузере. Когда приложение снова в сети, оно синхронизируется с CouchDB и совместимыми серверами.

Используя PouchDB, вы можете беспрепятственно взаимодействовать как с локальными, так и с удаленными базами данных, не замечая никакой разницы.

Особенности PouchDB

Ниже приведены особенности PouchDB -

  • Cross Browser - API, предоставляемый PouchDB, работает одинаково во всех средах, поэтому мы можем запускать приложение PouchDB в различных браузерах.

  • Light Weight - PouchDB - очень легкий API, он также легко включается, просто используя тег скрипта.

  • Easy to Learn - Если у вас есть предварительные знания любого языка программирования, выучить PouchDB несложно.

  • Open Source - PouchDB - это приложение с открытым исходным кодом, доступное на GitHub.

Преимущества PouchDB

Ниже приведены преимущества PouchDB:

  • Поскольку PouchDB находится внутри браузера, нет необходимости выполнять запросы по сети, это приводит к более быстрому выполнению запросов.

  • Вы можете синхронизировать данные с любым поддерживаемым сервером и тем самым запускать приложения как онлайн, так и офлайн.

Браузеры, поддерживающие PouchDB

Ниже приведены браузеры, поддерживающие PouchDB.

  • Firefox 29+ (включая Firefox OS и Firefox для Android)
  • Chrome 30+
  • Safari 5+
  • Internet Explorer 10+
  • Opera 21+
  • Android 4.0+
  • iOS 7.1+
  • Windows Phone 8+

В этой главе объясняется, как загрузить и установить PouchDB в вашей системе.

Установка PouchDB

Для работы с PouchDB вам необходимо скачать файл .jsфайл и включите его в свой сценарий. Ниже приведены шаги по установке PouchDB.

Шаг 1

Посетите домашнюю страницу веб-сайта PouchDB, щелкнув следующую ссылку -

https://PouchDB.com/

Шаг 2

Нажмите кнопку «Загрузить» в верхнем правом углу веб-страницы, как показано на скриншоте выше. Это загрузитPouchDB-5.3.0.min.js в вашей системе.

Шаг 3

Скопируйте и вставьте PouchDB-5.3.0.min.js в свой рабочий каталог и включите его в свой JavaScript, как показано в следующей команде.

<script src = "PouchDB-5.3.0.min.js"></script>

Установка пакета с помощью Node.js

Вы также можете установить PouchDB как модуль Node.js. Ниже приведены шаги по установке PouchDB с использованием Node.js.

Шаг 1

Установите Node.js, выполнив действия, описанные в разделе «Установка Node.js» нашего руководства по скриптам для кофе .

Шаг 2

Откройте командную строку и выполните следующую команду. Это установит модуль узла PouchDB в вашу систему.

npm install --save PouchDB

Скачивание CouchDB

В автономном режиме PouchDB хранит данные локально и работает как приложение. Вы можете получить к нему доступ онлайн, подключившись к совместимым серверам. Как мы знаем, PouchDB может быть подключен к CouchDB, поэтому давайте также установим CouchDB. Ниже приведены шаги по установке CouchDB.

Шаг 1

Официальный сайт CouchDB: http://couchdb.apache.org. Если вы нажмете данную ссылку, вы сможете перейти на домашнюю страницу официального сайта CouchDB, как показано на следующем снимке экрана.

Шаг 2

Если вы нажмете кнопку загрузки, это приведет к странице, на которой представлены ссылки для загрузки CouchDB в различных форматах. Следующий снимок показывает то же самое.

Шаг 3

Выберите ссылку для загрузки для систем Windows и выберите одно из предоставленных зеркал, чтобы начать загрузку.

Установка CouchDB

Исполняемый файл Windows setup-couchdb-1.6.1_R16B02.exeфайл будет загружен в вашу систему. Запустите установочный файл и продолжите установку.

После успешной установки CouchDB в вашей системе откройте папку, в которой был установлен CouchDB, перейдите в папку bin и запустите сервер, запустив файл сценария с именем couchdb.bat.

После установки откройте встроенный веб-интерфейс CouchDB, перейдя по следующей ссылке - http://127.0.0.1:5984/. Если все пойдет нормально, вы получите веб-страницу, которая будет иметь следующий результат.

{                 
   "couchdb":"Welcome","uuid":"c8d48ac61bb497f4692b346e0f400d60",
   "version":"1. 6.1",
   "vendor": {
      "version":"1.6.1","name":"The Apache Software Foundation"
   } 
}

Вы можете взаимодействовать с веб-интерфейсом CouchDB, используя следующий URL-адрес -

http://127.0.0.1:5984/_utils/

Это показывает вам индексную страницу Futon, которая является веб-интерфейсом CouchDB.

Вы можете создать базу данных в PouchDB с помощью конструктора PouchDB.

Синтаксис

Ниже приведен синтаксис использования конструктора PouchDB. Для этого вам необходимо передать имя базы данных в качестве параметра.

new PouchDB(Database_name)

пример

Чтобы создать базу данных в PouchDB, используя node, прежде всего, вам нужно потребовать пакет PouchDB с помощью require() метод, а затем вы можете создать базу данных, как показано в следующем примере.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');
console.log ("Database created Successfully.");

Сохраните приведенный выше код в файл с именем Create_Database.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples>node Create_Database.js

Это создаст базу данных локально (вы можете увидеть папку в текущем каталоге) с отображением следующего сообщения.

Database created Successfully.

Вы можете получить основную информацию о базе данных, используя метод с именем info()

Синтаксис

Ниже приводится синтаксис использования info()метод PouchDB. Этот метод принимает функцию обратного вызова.

db.info([callback])

пример

Ниже приведен пример получения информации из базы данных с помощью info()метод. Здесь мы отображаем информацию о базе данных с именемmy_database. В случае ошибки ошибка будет отображаться на консоли.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Database information
db.info(function(err, info) {
   if (err) {
      return console.log(err);
   } else {
      console.log(info);
   }
});

Сохраните приведенный выше код в файл с именем Database_info.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples>node Database_info.js

Это отобразит информацию указанной базы данных следующим образом.

{ 
   doc_count: 0,
   update_seq: 0,
   backend_adapter: 'LevelDOWN',
   db_name: 'my_database',
   auto_compaction: false,
   adapter: 'leveldb' 
}

Информация об удаленной базе данных

Таким же образом вы получаете информацию о базе данных, которая сохраняется удаленно на сервере (CouchDB). Для этого вместо имени базы данных вам нужно передать путь к необходимой базе данных в CouchDB.

пример

Ниже приведен пример получения информации из базы данных, сохраненной на сервере CouchDB. Этот код дает вам информацию о базе данных с именемmy_database.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Database information
db.info(function(err, info) {
   if (err) {
      return console.log(err);
   } else {
      console.log(info);
   }
});

Сохраните приведенный выше код в файл с именем Database_ Remote_info.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples>node Database_Remote_info.js

Это отобразит информацию указанной базы данных следующим образом.

{ 
   db_name: 'my_database', 
   doc_count: 0, 
   doc_del_count: 0, 
   update_seq: 0, 
   purge_seq: 0, 
   compact_running: false, 
   disk_size: 79, 
   data_size: 0, 
   instance_start_time: '1458209191708486', 
   disk_format_version: 6, 
   committed_update_seq: 0, 
   host: 'http://localhost:5984/my_database/', 
   auto_compaction: false, 
   adapter: 'http' 
}

Вы можете удалить базу данных в PouchDB, используя db.destroy() метод.

Синтаксис

Ниже приводится синтаксис использования db.destroy()метод. Этот метод принимает в качестве параметра функцию обратного вызова.

db.destroy()

пример

Ниже приведен пример удаления базы данных в PouchDB с помощью destroy()метод. Здесь мы удаляем базу данных с именемmy_database, созданный в предыдущих главах.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//deleting database
db.destroy(function (err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log ("Database Deleted”);
   }
});

Сохраните приведенный выше код в файл с именем Delete_Database.js. Откройте командную строку и выполните файл JavaScript, используя node как показано ниже.

C:\PouchDB_Examples >node Delete_Database.js

Это удалит базу данных с именем my_database который хранится локально с отображением следующего сообщения.

Database Deleted

Удаление удаленной базы данных

Таким же образом вы можете удалить базу данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных, которую необходимо удалить, в CouchDB.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Ниже приведен пример удаления базы данных с именем my_database который сохраняется на сервере CouchDB.

//Requiring the package
var PouchDB = require('pouchdb');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//deleting database
db.destroy(function (err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Database Deleted");
   }
});

Сохраните приведенный выше код в файл с именем Remote_Database_Delete.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >Remote_Database_Delete.js

Это удаляет указанную базу данных из PouchDB, отображая следующее сообщение.

Database Deleted

Проверка

После выполнения вышеуказанной программы, если вы снова посетите URL-адрес, вы получите следующий снимок экрана. Здесь вы можете наблюдать только две базы данных, так какmy_database был удален.

Вы можете создать документ в PouchDB, используя db.put() метод.

Синтаксис

Ниже приведен синтаксис использования метода db.put () PouchDB. Вы можете сохранить документ, который должен быть создан в PouchDB, в переменной и передать как параметр этому методу. Кроме того, этот метод также принимает в качестве параметра функцию обратного вызова (необязательную).

db.put(document, callback)

пример

Ниже приведен пример создания документа в PouchDB с использованием put()метод. Создаваемый нами документ должен иметь формат JSON, набор пар ключ-значение, разделенных запятыми (,) и заключены в фигурные скобки ({}).

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Preparing the document
doc = {
   _id : '001',
   name: 'Raju',
   age : 23,
   designation : 'Designer'
   }
//Inserting Document
db.put(doc, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Document created Successfully");
   }
});

Сохраните приведенный выше код в файл с именем Create_Document.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Create_Document.js

Это создает данный документ в базе данных PouchDB с именем my_database, который хранится локально, отображается следующее сообщение.

Document created Successfully

Вставка документа в удаленную базу данных

Вы также можете вставить документ в базу данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам нужно передать путь к базе данных, в которой вы хотите создавать документы в CouchDB.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Теперь, если вы щелкните базу данных с именем my_database, вы найдете пустую базу данных, как показано на следующем снимке экрана.

Ниже приведен пример вставки документа в базу данных с именем my_database который сохраняется на сервере CouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Preparing the document
doc = {
   _id : '001',
   name: 'Raju',
   age : 23,
   designation : 'Designer'
   }
//Inserting Document
db.put(doc, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Document created Successfully");
   }
});

Сохраните приведенный выше код в файл с именем Remote_Create_Document.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Create_Document.js

Это создает данный документ в базе данных PouchDB с именем my_database который хранится в CouchDB, отображается следующее сообщение.

Document created Successfully

Проверка

После выполнения вышеуказанной программы, если вы посетите my_database опять же, вы можете наблюдать созданный документ, как показано на следующем снимке экрана.

Вы можете прочитать / получить содержимое документа в PouchDB, используя db.get() метод.

Синтаксис

Ниже приводится синтаксис использования db.get()метод PouchDB. Этот метод принимаетdocument id и необязательная функция обратного вызова.

db.get(document, callback)

пример

Ниже приведен пример чтения содержимого документа в PouchDB с использованием get() метод.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Reading the contents of a Document
db.get('001', function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

Сохраните приведенный выше код в файл с именем Read_Document.js. Откройте командную строку и выполните файл JavaScript, используя узел, как показано ниже.

C:\PouchDB_Examples >node Read_Document.js

Это читает содержимое данного документа, который существует в базе данных с именем my_databaseкоторый хранится локально. На консоли отображается следующее сообщение.

{
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _id: '001',
   _rev: '1-ba7f6914ac80098e6f63d2bfb0391637'
}

Чтение документа из удаленной базы данных

Вы также можете прочитать документ из базы данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Щелкнув по базе данных с именем my_databaseвы можете увидеть следующий снимок экрана. Здесь вы можете заметить, что эта база данных содержит документ с идентификатором001.

Ниже приводится пример чтения содержимого документа с идентификатором «001», Который существует в базе данных с именем my_database, который хранится на сервере CouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Reading the contents of a document
db.get('001', function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

Сохраните приведенный выше код в файл с именем Remote_Read_Document.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Read_Document.js

Это читает содержимое данного документа, который существует в базе данных с именем my_databaseкоторый хранится в CouchDB. На консоли отображается следующее сообщение.

{ 
   _id: '001',
   _rev: '3-552920d1ca372986fad7b996ce365f5d',
   name: 'Raju',
   age: 23,
   designation: 'Designer' 
}

Каждый раз, когда мы создаем документ в PouchDB, появляется новое поле _rev генерируется, и он известен как revision marker. В_revзначение - уникальное случайное число, каждый раз, когда мы вносим изменения в документ, значение _rev изменено.

Вы можете обновить существующий документ в PouchDB, используя (_rev). Для этого сначала извлеките_revзначение документа, который мы хотим обновить. Теперь поместите содержимое, которое нужно обновить, вместе с полученным_rev значение в новом документе и, наконец, вставьте этот документ в PouchDB, используя put() метод.

пример

Предположим, у нас есть документ в PouchDB с идентификатором 001в котором есть данные о человеке. Чтобы обновить этот документ, у нас должен быть номер его версии. Следовательно, для получения содержимого документа используется следующий код.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Reading the contents of a Document
db.get('001', function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

Выполнив приведенный выше код, вы получите следующий результат.

{
   _id: '001',
   _rev: '3-552920d1ca372986fad7b996ce365f5d',
   name: 'Raju',
   age: 23,
   designation: 'Designer' 
}

Теперь, используя _rev вы можете обновить значение ключа «age”На 26, как показано в следующем коде.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Preparing the document for update
doc = {
   age: 26,
   _rev: '3-552920d1ca372986fad7b996ce365f5d',
   }

//Inserting Document
db.put(doc);

//Reading the contents of a Document
db.get('001', function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

Сохраните приведенный выше код в файл с именем Update_Document.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\Pouch_Examples>node Update_Document.js

Это обновляет содержимое данного документа, который существует в базе данных с именем my_databaseкоторый хранится локально. На консоли отображается следующее сообщение.

{ 
   name: 'Raju',
   age: 26,
   designation: 'Designer',
   _id: '001',
   _rev: '2-61b523ccdc4e41a8435bdffbb057a7a5' 
}

Обновление документа в удаленной базе данных

Вы также можете обновить существующий документ в базе данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам нужно передать путь к базе данных в CouchDB, которая содержит документ, который необходимо обновить.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Щелкнув по базе данных с именем my_database, вы можете увидеть следующий снимок экрана. Здесь вы можете заметить, что эта база данных содержит документ с идентификатором001.

Ниже приведен пример обновления возраста документа с идентификатором «001», Который существует в базе данных с именем my_database который хранится на сервере CouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Preparing the document for update
doc = {
   age: 26,
   _rev: '3-552920d1ca372986fad7b996ce365f5d',
   }

//Inserting Document
db.put(doc);

//Reading the contents of a Document
db.get('001', function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

Сохраните приведенный выше код в файл с именем Remote_Update_Document.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Update_Document.js

Это обновляет содержимое данного документа, который существует в базе данных с именем my_databaseкоторый хранится в CouchDB. На консоли отображается следующее сообщение.

{
   _id: '001',
   _rev: '2-b9640bffbce582c94308905eed8bb545',
   name: 'Raju',
   age: 26,
   designation: 'Designer' 
}

Вы можете удалить документ из базы данных, которая существует в PouchDB, используя db.remove() метод.

Синтаксис

Ниже приводится синтаксис использования db.remove()метод PouchDB. В этот метод мы должны передатьid и _revчтобы удалить существующий документ, как показано в следующем коде. Этот метод принимает дополнительную функцию обратного вызова. Мы также можем передать полный документ вместо id и _rev.

db. get ( docId, docRev, [callback] )
or
db. get ( docId, docRev, [callback] )

пример

Предположим, у нас есть документ в PouchDB с идентификатором 001которые содержат данные о человеке. Чтобы удалить этот документ вместе с егоid у нас также должны быть свои _revколичество. Поэтому получите содержимое документа, как показано в следующем коде.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Reading the contents of a Document
db.get('001', function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

Выполнение приведенного выше кода дает следующий результат.

{
   _id: '001',
   _rev: '3-552920d1ca372986fad7b996ce365f5d',
   name: 'Raju',
   age: 23,
   designation: 'Designer' 
}

Теперь, используя _rev и идентификатор документа, вы можете удалить его, используя remove() как показано в следующем коде.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Deleting an existing document
db.remove('001', '3-552920d1ca372986fad7b996ce365f5d', function(err) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Document deleted successfully");
   }
});

Сохраните приведенный выше код в файл с именем Delete_Document.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Delete_Document.js

Это удаляет содержимое данного документа, который существует в базе данных с именем my_databaseкоторый хранится локально. Отображается следующее сообщение.

Document deleted successfully

Удаление документа из удаленной базы данных

Вы также можете удалить существующий документ из базы данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Щелкнув по базе данных с именем my_databaseвы можете увидеть следующий снимок экрана. Здесь вы можете заметить, что база данных содержит документ с идентификатором001.

Ниже приведен пример удаления содержимого документа с идентификатором «001», Который существует в базе данных с именем my_database который хранится на сервере CouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Deleting an existing document
db.remove('001', '3-552920d1ca372986fad7b996ce365f5d', function(err) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Document deleted successfully");
   }
});

Сохраните приведенный выше код в файл с именем Remote_Delete_Document.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Delete_Document.js

Это удаляет данный документ, который существует в базе данных с именем my_databaseкоторый хранится в CouchDB. Отображается следующее сообщение.

Document deleted successfully

Вы можете создать массив (пакет) документов в PouchDB, используя db.bulkDocs()метод. При создании документов с использованием этого метода, если мы не предоставляем значения _id, от нашего имени PouchDB генерирует уникальные идентификаторы для всех документов в массе.

Синтаксис

Ниже приводится синтаксис использования db.bulkDocs()метод PouchDB. Вы можете сохранить все документы, которые должны быть созданы в PouchDB, в массиве и передать его этому методу в качестве параметра. В дополнение к этому, этот метод также принимает в качестве параметра функцию обратного вызова (необязательную).

db.bulkDocs(docs, [options], [callback])

пример

Ниже приведен пример создания нескольких документов в PouchDB с использованием db.bulkDocs ()метод. Создаваемые нами документы должны иметь формат JSON, набор пар ключ-значение, разделенных запятыми (,) и заключены в фигурные скобки ({}).

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Preparing the documents array
doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}
docs = [doc1, doc2, doc3]

//Inserting Documents
db.bulkDocs(docs, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Documents created Successfully");
   }
});

Сохраните приведенный выше код в файл с именем Create_Batch.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Create_Batch.js

Это создает данный документ в базе данных PouchDB с именем my_databaseкоторый хранится локально. Отображается следующее сообщение.

Documents created Successfully

Вставка пакета в удаленную базу данных

Вы можете вставить массив документов в базу данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам нужно передать путь к базе данных, в которой мы хотим создавать документы в CouchDB.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Ниже приведен пример вставки массива документов в базу данных с именем my_database который сохраняется на сервере CouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Preparing the documents array

doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}

docs = [doc1, doc2, doc3]

//Inserting Documents
db.bulkDocs(docs, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Documents created Successfully");
   }
});

Сохраните приведенный выше код в файл с именем Remote_Create_Batch.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Create_Batch.js

Это создает данные документы в базе данных PouchDB с именем my_databaseкоторый хранится в CouchDB. Отображается следующее сообщение.

Document created Successfully

Проверка

После выполнения вышеуказанной программы, если вы посетите my_database опять же, вы можете наблюдать за созданными документами, как показано на следующем снимке экрана.

Вы можете читать / извлекать несколько / объемных документов из базы данных в PouchDB, используя allDocs() метод.

Синтаксис

Ниже приводится синтаксис использования db.allDocs()метод PouchDB. Этот метод принимает дополнительную функцию обратного вызова.

db.allDocs()

пример

Ниже приведен пример получения всех документов в базе данных с именем my_database который хранится локально, используя db.allDocs()метод. Этот метод извлекает массив документов в виде объектов, чтобы получить содержимое каждого документа, который необходимо вызвать какdocs.rows.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Retrieving all the documents in PouchDB
db.allDocs(function(err, docs) {
   if (err) {
      return console.log(err);
   } else {
      console.log (docs.rows);
   }
});

Сохраните приведенный выше код в файл с именем Read_All_Document.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Read_All_Document.js

Это прочитает все документы, которые существуют в базе данных с именем my_databaseкоторый хранится локально. На консоли отображается следующее сообщение.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '1-9dc57f5faa7ea90eeec22eba8bfd05f5' } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-9bf80afcedb9f8b5b35567292affb254' } 
    },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-1204f108e41bf8baf867856d5da16c57' } 
   }
]

В общем, как показано в приведенном выше результате, используя allDocs() метод вы можете увидеть только _id, key и _revполя каждого документа. Однако чтобы включить в результат весь документ, необходимо сделать необязательный параметрinclude_docs верно, как показано ниже.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true}, function(err, docs) {
   if (err) {
      return console.log(err);
   } else {
      console.log (docs.rows);
   }
});

Выполнение приведенного выше кода дает вам список полных документов в указанных документах, как показано в следующем коде.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '1-9dc57f5faa7ea90eeec22eba8bfd05f5' },
      doc: { 
         name: 'Ram',
         age: 23,
         Designation: 'Programmer',
         _id: '001',
         _rev: '1-9dc57f5faa7ea90eeec22eba8bfd05f5' 
      } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-9bf80afcedb9f8b5b35567292affb254' },
      doc: { 
         name: 'Robert',
         age: 24,
         Designation: 'Programmer',
         _id: '002',
         _rev: '1-9bf80afcedb9f8b5b35567292affb254' 
      } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-1204f108e41bf8baf867856d5da16c57' },
      doc: { 
         name: 'Rahim',
         age: 25,
         Designation: 'Programmer',
         _id: '003',
         _rev: '1-1204f108e41bf8baf867856d5da16c57' 
      } 
   }
]

Чтение пакета из удаленной базы данных

Вы также можете получить все документы из базы данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Ниже приведен пример чтения всех документов, которые существуют в базе данных с именем my_database который хранится на сервере CouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true}, function(err, docs) {
   if (err) {
      return console.log(err);
   } else {
      console.log(docs.rows);
   }
});

Сохраните приведенный выше код в файл с именем Remote_Read_AllDocument.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Read_AllDocument.js

Это читает содержимое данного документа, который существует в базе данных с именем my_database который хранится в CouchDB и отображается на консоли, как показано ниже.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '3-552920d1ca372986fad7b996ce365f5d' },
      doc: { 
         _id: '001',
         _rev: '3-552920d1ca372986fad7b996ce365f5d',
         name: 'Raju',
         age: 23,
         designation: 'Designer' 
      } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-9af15cb11054ebe03a7816bf6c5e4128' },
      doc: { 
         _id: '002',
         _rev: '1-9af15cb11054ebe03a7816bf6c5e4128',
         name: 'Robert',
         age: 24,
         Designation: 'Programmer' 
      } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-3033b5a78e915c52fd37325d42eb3935' },
      doc: { 
         _id: '003',
         _rev: '1-3033b5a78e915c52fd37325d42eb3935',
         name: 'Rahim',
         age: 25,
         Designation: 'Programmer' 
      } 
   } 
]

Вы можете обновить массив документов в PouchDB сразу, используя bulkDocs()метод. Для этого вам нужно создать массив документов, в котором каждый документ содержит_id, _rev и значения, которые необходимо обновить.

Предположим, что база данных с именем my_database который хранится локально в PouchDB, содержит 3 документа, а именно doc1, doc2, doc3 со следующим содержимым.

doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}

Предположим, нам нужно увеличить значения возраста во всех трех документах на 2 года. Для этого сначала нужно получить_revзначения. Поэтому получите содержимое этих документов, используя следующий код.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true},function(err, docs) {
   if (err) {
      return console.log(err);
   } else {
      console.log(docs.rows);
   }
});

Сохраните приведенный выше код как bulk_fetch.js. При выполнении вышеуказанная программа дает вам значения _id и _rev документов в базе данных, как показано ниже.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' } 
   } 
]

Теперь вы можете обновлять документы, используя их соответствующие _id и _rev значения, как показано ниже.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_databas');

//Preparing the document
docs = [{_id : '001', _rev: '1-1604b0c3ff69dc1e261265fd60808404', age : 25, },
      {_id : '002', _rev: '1-b5e49db7e984841bf12a13e3ee548125', age : 26, },
      {_id : '003', _rev: '1-a7b342786ecc707aa91f3b321a177b51', age : 27 }]

//Updating the documents in bulk
db.bulkDocs(docs, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Documents Updated Successfully");
   }
});

Сохраните приведенный выше код в файл с именем Update_All_Document.js. Откройте командную строку и выполните файл JavaScript, используя узел, как показано ниже.

C:\PouchDB_Examples >node Update_All_Document.js

Это обновляет все документы, которые существуют в базе данных с именем my_database который хранится локально, отображается следующее сообщение.

Documents Updated Successfully

Теперь, если вы выполните bulk_fetch.js программа, добавив {include_docs: true} как параметр allDocs() , то перед обратным вызовом вы увидите значения обновленных документов, как показано ниже.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '2-77f3a9974dd578d12f3f2a33aae64c8d' },
      doc: { 
         age: 25,
         _id: '001',
         _rev: '2-77f3a9974dd578d12f3f2a33aae64c8d' 
      } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '2-43966007568ce9567c96422195fcfa0d' },
      doc: { 
         age: 26,
         _id: '002',
         _rev: '2-43966007568ce9567c96422195fcfa0d' 
      } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '2-6c5349652527f4f39583ff14f23cd677' },
      doc: { 
         age: 27,
         _id: '003',
         _rev: '2-6c5349652527f4f39583ff14f23cd677' 
      } 
   } 
]

Обновление пакета из удаленной базы данных

Вы можете обновить все документы из базы данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

И предположим, что если мы выберем базу данных с именем my_database, вы можете заметить, что он содержит 3 документа, как показано на следующем снимке экрана.

Теперь получите содержимое этих документов, используя следующий код.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true}, function(err, docs) {
   if (err) {
      return console.log(err);
   } else {
      console.log(docs.rows);
   }
});

Сохраните приведенный выше код как remote_bulk_fetch.js. При запуске вышеуказанная программа выдает вам содержимое всех документов в базе данных, как показано ниже.

[ 
   { 
      id: '001', 
      key: '001', 
      value: { rev: '3-552920d1ca372986fad7b996ce365f5d' }, 
      doc: { 
         _id: '001', 
         _rev: '3-552920d1ca372986fad7b996ce365f5d', 
         name: 'Raju', 
         age: 23, 
         designation: 'Designer' 
      } 
   },
   { 
      id: '002', 
      key: '002', 
      value: { rev: '1-9af15cb11054ebe03a7816bf6c5e4128' }, 
      doc: { 
         _id: '002', 
         _rev: '1-9af15cb11054ebe03a7816bf6c5e4128', 
         name: 'Robert', 
         age: 24, 
         Designation: 'Programmer' 
      } 
   }, 
   { 
      id: '003', 
      key: '003', 
      value: { rev: '1-3033b5a78e915c52fd37325d42eb3935' }, 
      doc: { 
         _id: '003',
         _rev: '1-3033b5a78e915c52fd37325d42eb3935',
         name: 'Rahim', 
         age: 25, 
         Designation: 'Programmer' 
      } 
   } 
]

Ниже приведен пример обновления всех документов, существующих в базе данных с именем my_database который хранится на сервере CouchDB.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object 
var db = new PouchDB('http://localhost:5984/my_database'); 

//Preparing the document 
docs = [{_id : '001', _rev: '3-552920d1ca372986fad7b996ce365f5d', age : 24, }, 
      {_id : '002', _rev: '1-9af15cb11054ebe03a7816bf6c5e4128', age : 26, }, 
      {_id : '003', _rev: '1-3033b5a78e915c52fd37325d42eb3935', age : 27}]

//Inserting Document 
db.bulkDocs(docs, function(err, response) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log(+"Documents Updated Successfully"); 
   } 
});

Сохраните приведенный выше код в файл с именем Remote_Update_Document.js. Откройте командную строку и выполните файл JavaScript, используя узел, как показано ниже.

C:\PouchDB_Examples >node Remote_Update_Document.js

Это обновляет содержимое всего данного документа, который существует в базе данных с именем my_database который хранится в CouchDB, и отображает следующее сообщение.

Documents Updated Successfully

Теперь, если вы выполните remote_bulk_fetch.js Программа вы сможете увидеть значения обновленных документов, как показано ниже.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39' },
      doc: { 
         _id: '001',
         _rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39',
         age: 25 
      } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0' },
      doc: { 
         _id: '002',
         _rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0',
         age: 26 
      } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '2-fa113149ba618eda77f73072974a2bc1' },
      doc: { 
         _id: '003',
         _rev: '2-fa113149ba618eda77f73072974a2bc1',
         age: 27 
      } 
   } 
]

Вы можете удалить массив документов в PouchDB сразу, используя bulkDocs()метод. Для этого вам нужно создать массив документов, которые нужно удалить, где каждый документ должен содержать_id и _rev. В дополнение к ним вам необходимо добавить еще одну пару "ключ-значение"_deleted: true.

Предположим, что база данных с именем my_database который хранится локально в PouchDB, содержит 3 документа, а именно doc1, doc2, doc3 со следующим содержимым.

doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'}
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}

И скажем, мы должны удалить все три документа. Тогда в первую очередь нужно получить их_revзначения. Поэтому получите содержимое этих документов, используя следующий код.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true},function(err, docs) {
   if (err) {
      return console.log(err);
   } else {
      console.log(docs.rows);
   }
});

Сохраните приведенный выше код как bulk_fetch.js. Выполнение вышеуказанной программы дает вам значения _id и _rev документов в базе данных, как показано ниже.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '1-1604b0c3ff69dc1e261265fd60808404' } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-b5e49db7e984841bf12a13e3ee548125' } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-a7b342786ecc707aa91f3b321a177b51' } 
   } 
]

Теперь вы можете удалить документы, используя их соответствующие _id и _rev значения, как показано ниже.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Preparing the document
docs = [{_id : '001', _rev: '2-77f3a9974dd578d12f3f2a33aae64c8d', _deleted : true },
      {_id : '002', _rev: '2-43966007568ce9567c96422195fcfa0d', _deleted : true }, 
      {_id : '003', _rev: '2-6c5349652527f4f39583ff14f23cd677',_deleted : true }]

//Deleting Documents
db.bulkDocs(docs, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log(response+"Documents deleted Successfully");
   }
});

Сохраните приведенный выше код в файл с именем Delete_All_Document.js. Откройте командную строку и выполните файл JavaScript, используя узел, как показано ниже.

C:\PouchDB_Examples >node Delete_All_Document.js

Это удаляет все документы, которые существуют в базе данных с именем my_database который хранится локально, отображается следующее сообщение.

Documents Deleted Successfully

Теперь, если вы выполните bulk_fetch.js программы вы можете увидеть пустую скобку на консоли, указывающую, что база данных пуста, как показано ниже.

[]

Удаление пакета из удаленной базы данных

Вы можете обновить все документы из базы данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Если мы выберем базу данных с именем my_database, вы можете заметить, что он содержит 3 документа, как показано на следующем снимке экрана.

Ниже приведен пример удаления всех документов, существующих в базе данных с именем my_database который хранится на сервере CouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Preparing the document
docs = [{_id : '001', _rev: '4-6bc8d9c7a60fed2ed1667ec0740c1f39', _deleted : true },
      {_id : '002', _rev: '2-1aa24ce77d96bb9d2a0675cdf1e113e0', _deleted : true },
      {_id : '003', _rev: '2-fa113149ba618eda77f73072974a2bc1',_deleted : true }]

//Deleting Documents
db.bulkDocs(docs, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log("Documents deleted Successfully");
   }
});

Сохраните приведенный выше код в файл с именем Remote_delete_AllDocuments.js. Откройте командную строку и выполните файл JavaScript, используя узел, как показано ниже.

C:\PouchDB_Examples >node Remote_Delete_AllDocuments.js

Это удаляет содержимое всего данного документа, который существует в базе данных с именем my_database который хранится в CouchDB, и отображает следующее сообщение.

Documents Deleted Successfully

Вы можете прикрепить бинарный объект к документу, используя putAttachment() в PouchDB.

Синтаксис

Ниже приводится синтаксис putAttachment(). В этот метод мы должны передать идентификатор документа, идентификатор вложения, тип MIME вместе с вложением. Этот метод также принимает дополнительную функцию обратного вызова.

db.putAttachment( docId, attachmentId, attachment, type, [callback] );

Мы можем подготовить вложение, используя blob или буферные объекты, где blob используется при работе с браузером и buffer используется при работе с Node.js, поскольку мы демонстрируем наши программы на Node.js, мы используем буферные объекты для подготовки документов.

пример

Ниже приведен пример создания документа с вложением в базе данных с именем my_database в PouchDB, используя putAttachment() метод.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object var db = new PouchDB('my_database');

//Preparing the attachment 
var my_attachment = new Buffer(['Welcome to tutorialspoint'], {type: 'text/plain'});

//Adding attachment to a document 
db.putAttachment('001', 'att_1.txt', my_attachment, 'text/plain', function(err, res) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log(res+"Attachment added successfully") 
   } 
});

Сохраните приведенный выше код в файл с именем Add_Attachment.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Add_Attachment.js

Это создает пустой документ с добавлением к нему вложения в базе данных с именем my_database который хранится в PouchDB, и отображает следующее сообщение.

Attachment added successfully

Вы можете проверить, добавлено ли вложение, прочитав документ, используя следующий код.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object var db = new PouchDB('my_database');

//Reading the Document 
db.get('001',{attachments: true}, function(err, doc) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log(doc); 
   } 
});

Сохраните приведенный выше код как read_doc.jsи выполнить его. Запустив эту программу, вы можете увидеть следующее содержимое документа.

{ 
   _attachments: { 
      att_1.txt: { 
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA==' 
      } 
   },
   _id: '001',
   _rev: '1-620fd5f41d3328fcbf9ce7504338a51d' 
}

Добавление вложения к существующему документу

Допустим, в базе данных есть документ по имени my_database PouchDB с идентификатором '002'. Вы можете получить его содержимое, выполнивread_doc.js изменив значение id на 002, как показано ниже.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _id: '002',
   _rev: '1-05ca7b5f3f4762a9fb2d119cd34c8d40' 
}

Теперь вы можете добавить приложение к этому документу, используя его _rev значение.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object var db = new PouchDB('my_database');

//Adding attachment to existing document 
var my_attachment = new Buffer (['Welcome to tutorialspoint'], {type: 'text/plain'});

rev = '1-05ca7b5f3f4762a9fb2d119cd34c8d40'; 
db.putAttachment('002', 'att_1.txt', rev, my_attachment, 'text/plain', function(err, res) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log (res + "Attachment added successfully") 
   } 
});

Сохраните приведенный выше код в файл с именем Add_Attachment_to_doc.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Add_Attachment_to_doc.js

Это добавляет вложение к указанному документу со следующим сообщением.

Attachment added successfully

Если вы измените значение id в read_doc.js к 002 и выполните его, вы получите следующий результат.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _attachments: { 
      att_1: { 
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA==' 
      } 
   },
   _id: '002',
   _rev: '2-3bb4891b954699bce28346723cc7a709' 
}

Добавление вложения к удаленному документу

Вы даже можете добавить вложение к документу, существующему в базе данных, которая хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

И если вы выберете базу данных с именем my_database, вы можете просмотреть его содержимое, как показано ниже.

Ниже приведен пример добавления вложения к документу. 001 хранится в базе данных с именем my_database который хранится на сервере CouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('http://localhost:5984/my_database');

//Adding attachment to existing document
var my_attachment = new Buffer (['Welcome to tutorialspoint'], {type: 'text/plain'});

rev = '1-36c34fdcf29a652876219065f9681602';
db.putAttachment('001', 'att_1.txt',rev, my_attachment, 'text/plain', function(err, res) {
   if (err) {
      return console.log(err);
   } else {
      console.log (res+ "Attachment added successfully")
   }
});

Сохраните приведенный выше код в файл с именем Remote_Add_Attachment.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Add_Attachment.js

Это добавляет вложение к указанному документу со следующим сообщением.

Attachment added successfully

Теперь, если вы проверите документ, вы можете увидеть добавленное к нему вложение, как показано на следующем снимке экрана.

Вы можете получить вложение из PouchDB, используя getAttachment()метод. Этот метод всегда возвращает объекты BLOB-объектов или буферов.

Синтаксис

Ниже приводится синтаксис getAttachment(). В этот метод мы должны передать идентификатор документа и идентификатор вложения. Этот метод также принимает дополнительную функцию обратного вызова.

db.getAttachment( docId, attachmentId, [callback] );

пример

Ниже приведен пример получения вложения документа, хранящегося в PouchDB, с использованием getAttachment()метод. Используя этот код, мы пытаемся получить вложениеatt_1.txt из документа 001.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Retrieving an attachment from a document
db.getAttachment('001', 'att_1.txt', function(err, blob_buffer) {
   if (err) {
      return console.log(err);
   } else {
      console.log(blob_buffer);
   }
});

Сохраните приведенный выше код в файл с именем Retrieve_Attachment.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Retrieve_Attachment.js

Это извлекает вложение документа и отображает его на консоли, как показано ниже.

<Buffer 00>

Получение вложения из удаленного документа

Вы также можете получить вложение документа, существующего в базе данных, который хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

Если вы выберете базу данных с именем my_database, вы можете просмотреть его содержимое, как показано ниже.

Предположим, к этому документу есть приложение, как показано ниже.

Ниже приведен пример получения вложения документа. 001 который существует в базе данных с именем my_database, который хранится на сервере CouchDB.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object 
var db = new PouchDB('http://localhost:5984/my_database');

//Retrieving an attachment from a document 
db.getAttachment('001', 'att_1.txt', function(err, blob_buffer) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log(blob_buffer); 
   } 
});

Сохраните приведенный выше код в файл с именем Remote_Retrieve_Attachment.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Retrieve_Attachment.js

Это извлекает вложение документа и отображает его на консоли, как показано ниже.

<Buffer 00>

Вы можете удалить вложение из PouchDB, используя removeAttachment() метод.

Синтаксис

Ниже приводится синтаксис removeAttachment()метод. В этот метод мы должны передать идентификатор документа, идентификатор вложения и значение _rev. Этот метод также принимает дополнительную функцию обратного вызова.

db.removeAttachment ( docId, attachmentId, rev, [callback] );

пример

Предположим, в PouchDB есть документ с идентификатором 001, который содержит идентификатор, имя, возраст, должность сотрудника вместе с приложением, как показано ниже.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _attachments: { 
      'att_1.txt': { 
         content_type: 'text/plain',
         digest: 'md5-k7iFrf4NoInN9jSQT9WfcQ==',
         data: 'AA==' 
      } 
   },
   _id: '001',
   _rev: '2-cdec6c9f45ddbee7d456945654742d43' 
}

Ниже приведен пример удаления вложения этого документа. 001 хранится в PouchDB, используя removeAttachment() метод.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my');
db.removeAttachment('001', 'att_1.txt', '2-cdec6c9f45ddbee7d456945654742d43', 
   function(err, res) {
   if (err) {
      return console.log(err);
   } else {
      console.log(res+"Attachment Deleted successfully")
   }
});

Сохраните приведенный выше код в файл с именем Remove_Attachment.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remove_Attachment.js

Это удалит вложение документа и отобразит сообщение на консоли, как показано ниже.

Attachment deleted successfully

После удаления вы можете проверить содержимое документа, выполнив следующий код.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_d');

//Reading the Document
db.get('001',{attachments: true}, function(err, doc) {
   if (err) {
      return console.log(err);
   } else {
      console.log(doc);
   }
});

Сохраните этот код как read.jsи выполнить его. При выполнении вы получите содержимое документа после удаления вложения, как показано ниже.

{ 
   name: 'Raju',
   age: 23,
   designation: 'Designer',
   _id: '001',
   _rev: '3-da775487a6ed0495f2e49c543384f8e8' 
}

Удаление вложения из удаленного документа

Вы можете удалить вложение существующего документа в базе данных, который хранится удаленно на сервере (CouchDB).

Для этого вместо имени базы данных вам необходимо передать путь к базе данных в CouchDB, которая содержит документ, который необходимо прочитать.

пример

Предположим, есть база данных с именем my_databaseна сервере CouchDB. Затем, если вы проверите список баз данных в CouchDB, используя URL-адресhttp://127.0.0.1:5984/_utils/index.html вы получите следующий снимок экрана.

И если вы выберете базу данных с именем my_database, вы можете просмотреть его содержимое, как показано ниже.

Предположим, что в этом документе есть приложение, как показано ниже.

Ниже приведен пример удаления вышеупомянутого приложения к документу. 001 который существует в базе данных с именем my_database который хранится на сервере CouchDB.

//Requiring the package 
var PouchDB = require('PouchDB');

//Creating the database object 
var db = new PouchDB('http://localhost:5984/my_database');

db.removeAttachment('001', 'att_1.txt', '2-049f1c4ffa54576ec0947b65e34de423', 
   function(err, res) { 
   if (err) { 
      return console.log(err); 
   } else { 
      console.log(res+"Attachment Deleted successfully") 
   } 
});

Сохраните приведенный выше код в файл с именем Remote_Delete_Attachment.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Remote_Delete_Attachment.js

Это удалит существующее вложение и отобразит следующее сообщение.

Attachment Deleted successfully

Если вы снова посетите документ, вы можете заметить, что вложение было удалено, как показано на следующем снимке экрана.

Одной из наиболее важных функций PouchDB является репликация, то есть вы можете сделать копию базы данных. Вы можете реплицировать либо экземпляр PouchDB, хранящийся локально, либо экземпляр CouchDB, хранящийся удаленно.

Синтаксис

Ниже приводится синтаксис репликации базы данных в PouchDB. Здесь копияsource databaseэто цель. В этот метод вы можете напрямую передать расположение исходной и целевой баз данных в строковом формате или передать объекты, представляющие их.

PouchDB.replicate(source, target, [options])

И источник, и цели могут быть экземплярами PouchDB или экземплярами CouchDB.

Репликация LocalDB в CouchDB

Допустим, есть база данных с названием sample_database в PouchDB и содержит 3 документа: doc1, doc2 и doc3, содержимое которых показано ниже.

doc1 = {_id: '001', name: 'Ram', age: 23, Designation: 'Programmer'} 
doc2 = {_id: '002', name: 'Robert', age: 24, Designation: 'Programmer'} 
doc3 = {_id: '003', name: 'Rahim', age: 25, Designation: 'Programmer'}

Ниже приведен пример создания копии базы данных с именем sample_database который хранится локально в CouchDB.

//Requiring the package 
var PouchDB = require('PouchDB');

var localdb = 'sample_database';

//Creating remote database object 
var remotedb = 'http://localhost:5984/sample_database';

//Replicating a local database to Remote 
PouchDB.replicate(localDB, remoteDB); 
console.log ("Database replicated successfully");

Сохраните приведенный выше код в файл с именем Replication_example.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Replication_example.js

Это создает копию базы данных с именем sample_database в экземпляре CouchDB и отображает сообщение на консоли, как показано ниже.

Database replicated successfully

Вы можете проверить, реплицируется ли база данных в вашем экземпляре CouchDB, щелкнув следующую ссылку http://127.0.0.1:5984/_utils/index.html.

Щелкнув, вы увидите список баз данных в вашем CouchDB. Вы также можете заметить, что копия базы данныхsample_database создается здесь.

Если вы выберете реплицированную базу данных, вы сможете просмотреть ее содержимое, как показано ниже.

Репликация CouchDB в PouchDB

Допустим, есть база данных с названием Remote_Database в CouchDB и содержит 3 документа: doc1, doc2 и doc3, содержимое которых показано ниже.

doc1 = {_id: '001', name: 'Geeta', age: 25, Designation: 'Programmer'}
doc2 = {_id: '002', name: 'Zara Ali', age: 24, Designation: 'Manager'}
doc3 = {_id: '003', name: 'Mary', age: 23, Designation: 'Admin'}

Ниже приведен пример создания копии базы данных с именем Remote_Database который хранится в CouchDB в локальном хранилище.

//Requiring the package
var PouchDB = require('PouchDB');

var localdb = 'sample_database';

var remotedb = 'http://localhost:5984/sample_database1';

//Replicating a local database to Remote
PouchDB.replicate(remotedb, localdb);
console.log("Database replicated successfully");

Сохраните приведенный выше код в файл с именем Replication_example2.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Replication_example2.js

Это создает копию базы данных с именем remote_database в экземпляре PouchDB и отображает сообщение на консоли, как показано ниже.

Database replicated successfully

Вы можете проверить, реплицируется ли база данных в вашем экземпляре Pouch, выполнив следующий код.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('remote_database');

//Retrieving all the documents in PouchDB
db.allDocs({include_docs: true, attachments: true}, function(err, docs) {
   if (err) {
      return console.log(err);
   } else {
      console.log(docs.rows);
   }
});

Если база данных реплицируется при выполнении вышеуказанного кода, вы получите содержимое реплицированной базы данных, как показано ниже.

[ 
   { 
      id: '001', 
      key: '001', 
      value: { rev: '1-23cf3767e32a682c247053b16caecedb' }, 
      doc: { 
         name: 'Geeta', 
         age: 25, 
         Designation: 'Programmer', 
         _id: '001',
         _rev: '1-23cf3767e32a682c247053b16caecedb' 
      } 
   }, 
   { 
      id: '002', 
      key: '002', 
      value: { rev: '1-d5bcfafbd4d4fae92fd7fc4fdcaa3a79' }, 
      doc: { 
         name: 'Zara Ali', 
         age: 24, 
         Designation: 'Manager', 
         _id: '002',
         _rev: '1-d5bcfafbd4d4fae92fd7fc4fdcaa3a79' 
      } 
   }, 
   { 
      id: '003', 
      key: '003', 
      value: { rev: '1-c4cce025dbd30d21e40882d41842d5a4' }, 
      doc: { 
         name: 'Mary', 
         age: 23, 
         Designation: 'Admin', 
         _id: '003', 
         _rev: '1-c4cce025dbd30d21e40882d41842d5a4' 
      } 
   } 
]

Вы можете синхронизировать базы данных, хранящиеся локально в PouchDB, с базами данных, хранящимися в CouchDB. В предыдущей главе мы увидели, как реплицировать базы данных с помощью PouchDB. Там мы использовали методPouchDB.replicate(source, destination).

В дополнение к этому, мы также можем реплицировать данные из локальной базы данных в удаленную базу данных и из удаленной базы данных в локальную базу данных, используя replicate.to() и replicate.from() методы, как показано ниже.

//Replicating data from local database to remote database 
localDB.replicate.to(remoteDB);

//Replicating data from remote database to local database 
localDB.replicate.from(remoteDB);

Где, localDB это объект базы данных, хранящийся локально в PouchDB и remoteDB это объект базы данных, который хранится в CouchDB.

пример

Допустим, есть база данных с названием local_database в PouchDB, и он содержит 3 документа: doc1, doc2 и doc3, содержимое которых показано ниже.

doc1 = {_id: '003', name: 'Ram', age: 26, Designation: 'Programmer'} 
doc2 = {_id: '004', name: 'Robert', age: 27, Designation: 'Programmer'} 
doc3 = {_id: '005', name: 'Rahim', age: 28, Designation: 'Programmer'}

И есть база данных с названием Remote_Database в CouchDB и содержит 2 документа doc1, doc2, содержимое которых показано ниже.

doc1 = {_id: '001', name: 'Geeta', age: 25, Designation: 'Programmer'} 
doc2 = {_id: '002', name: 'Zara Ali', age: 24, Designation: 'Manager'}

Ниже приведен пример синхронизации этих двух баз данных, одна из которых хранится в PouchDB, а другая - в CouchDB, с использованием replicate.to() и replicate.from() методы.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating local database object
var localDB = new PouchDB('local_database');

//Creating remote database object
var remoteDB = new PouchDB('http://localhost:5984/remote_database');

//Synchronising both databases
localDB.replicate.to(remoteDB);
remoteDB.replicate.from(localDB);
console.log("Databases synchronized successfully");

Сохраните приведенный выше код в файл с именем Synchronising_databases.js. Откройте командную строку и выполните файл JavaScript, используяnode как показано ниже.

C:\PouchDB_Examples >node Synchronising_databases.js

Это синхронизирует две базы данных remoteDB и localDB и отображает сообщение на консоли, как показано ниже.

Databases synchronized successfully.

После синхронизации двух баз данных посетите http://127.0.0.1:5984/_utils/index.html и выберите remote_database. Вы можете заметить, что документы локальной базы данных (003, 004, 005) были скопированы в эту базу данных, как показано ниже.

Таким же образом, если вы извлекаете содержимое local_database хранится в PouchDB, вы можете увидеть, что документы из базы данных, хранящейся в CouchDB, были скопированы сюда.

[ 
   { 
      id: '001',
      key: '001',
      value: { rev: '1-23cf3767e32a682c247053b16caecedb' },
      doc: { 
         name: 'Geeta',
         age: 25,
         Designation: 'Programmer',
         _id: '001',
         _rev: '1-23cf3767e32a682c247053b16caecedb' 
      } 
   },
   { 
      id: '002',
      key: '002',
      value: { rev: '1-d5bcfafbd4d4fae92fd7fc4fdcaa3a79' },
      doc: { 
         name: 'Zara Ali',
         age: 24,
         Designation: 'Manager',
         _id: '002',
         _rev: '1-d5bcfafbd4d4fae92fd7fc4fdcaa3a79' 
      } 
   },
   { 
      id: '003',
      key: '003',
      value: { rev: '1-bf4619471ac346fdde46cfa8fbf3587f' },
      doc: { 
         name: 'Ram',
         age: 26,
         Designation: 'Programmer',
         _id: '003',
         _rev: '1-bf4619471ac346fdde46cfa8fbf3587f' 
      } 
   },
   { 
      id: '004',
      key: '004',
      value: { rev: '1-29b8f803958c994e3eb37912a45d869c' },
      doc: { 
         name: 'Robert',
         age: 27,
         Designation: 'Programmer',
         _id: '004',
         _rev: '1-29b8f803958c994e3eb37912a45d869c' 
      } 
   },
   { 
      id: '005',
      key: '005',
      value: { rev: '1-0eb89f71998ffa8430a640fdb081abd2' },
      doc: { 
         name: 'Rahim',
         age: 28,
         Designation: 'Programmer',
         _id: '005',
         _rev: '1-0eb89f71998ffa8430a640fdb081abd2' 
      } 
   } 
]

Вы можете переписать указанную выше программу, используя sync() метод, предоставляемый PouchDB вместо двух методов replicate.to() и replicate.from() как показано ниже.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating local database object
var localDB = new PouchDB('local');

//Creating remote database object
var remoteDB = new PouchDB('http://localhost:5984/remote_database');

//Synchronising Remote and local databases
localDB.sync(remoteDB, function(err, response) {
   if (err) {
      return console.log(err);
   } else {
      console.log(response);
   }
});

При выполнении вышеуказанной программы он синхронизирует две базы данных, отображая следующее сообщение.

{ 
   push: { 
      ok: true,
      start_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time),
      docs_read: 6,
      docs_written: 6,
      doc_write_failures: 0,
      errors: [],
      last_seq: 10,
      status: 'complete',
      end_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time) 
   },
   pull: { 
      ok: true,
      start_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time),
      docs_read: 0,
      docs_written: 0,
      doc_write_failures: 0,
      errors: [],
      last_seq: 2,
      status: 'complete',
      end_time: Fri Mar 25 2016 15:54:37 GMT+0530 (India Standard Time) 
   } 
}

В этой главе мы обсудим такие концепции, как сжатие и извлечение больших объемов данных из PouchDB.

Уплотнение

Вы можете уменьшить размер базы данных, удалив неиспользуемые данные, используя compact()метод. Используя этот метод, вы можете сжать как локальную, так и удаленную базу данных.

Ниже приведен пример, демонстрирующий использование compact() в PouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('sample_database');

db.compact(function (err, result) {
   if (err) {
      return console.log(err);
   } else {
      console.log(result);
   }
});

Метод BulkGet

Вы можете получить пакет документов, используя bulkGet()метод. В этот метод вам нужно передать набор идентификаторов и _rev.

Ниже приведен пример, демонстрирующий использование bulkGet() в PouchDB.

//Requiring the package
var PouchDB = require('PouchDB');

//Creating the database object
var db = new PouchDB('my_database');

//Preparing documents
//Inserting Document
db.bulkGet({docs: [
   { id: "001", rev: "1-5dc593eda0e215c806677df1d12d5c47"},
   { id: "002", rev: "1-2bfad8a9e66d2679b99c0cab24bd9cc8"},
   { id: "003", rev: "1-7cff4a5da1f97b077a909ff67bd5b047"} ]}, function(err, result) {
   if (err) {
      return console.log(err);
   } else {
      console.log(result);
   }
});