PouchDB — Обзор
В этой главе дается краткое введение в PouchDB, а также его функции и принципы работы.
Что такое PouchDB?
PouchDB — это API-интерфейс базы данных в браузере с открытым исходным кодом, написанный на JavaScript. Это смоделировано после Couch DB & minuss; база данных NoSQL. Используя этот API, мы можем создавать приложения, которые работают в автономном режиме и онлайн. Он внутренне использует WebSQL и IndexedDB для хранения данных.
Как это работает?
В PouchDB, когда приложение находится в автономном режиме, данные хранятся локально с использованием WebSQL и IndexedDB в браузере. Когда приложение снова подключено к сети, оно синхронизируется с CouchDB и совместимыми серверами.
Используя PouchDB, вы можете легко взаимодействовать как с локальными, так и с удаленными базами данных, не замечая никакой разницы.
Особенности PouchDB
Ниже приведены особенности PouchDB —
-
Кросс-браузер — API, предоставляемый PouchDB, работает одинаково в любой среде, поэтому мы можем запустить приложение PouchDB в различных браузерах.
-
Легкий вес — PouchDB — это очень легкий API, он также легко включается с помощью тега script.
-
Легко выучить — если у вас есть предварительные знания какого-либо языка программирования, вы легко выучите PouchDB.
-
Открытый исходный код — PouchDB — это приложение с открытым исходным кодом, доступное на GitHub.
Кросс-браузер — API, предоставляемый PouchDB, работает одинаково в любой среде, поэтому мы можем запустить приложение PouchDB в различных браузерах.
Легкий вес — PouchDB — это очень легкий API, он также легко включается с помощью тега script.
Легко выучить — если у вас есть предварительные знания какого-либо языка программирования, вы легко выучите PouchDB.
Открытый исходный код — PouchDB — это приложение с открытым исходным кодом, доступное на GitHub.
Преимущества PouchDB
Ниже приведены преимущества PouchDB —
-
Поскольку PouchDB находится внутри браузера, нет необходимости выполнять запросы по сети, это приводит к более быстрому выполнению запросов.
-
Вы можете синхронизировать данные с любым из поддерживаемых серверов и, тем самым, запускать приложения как в сети, так и в автономном режиме.
Поскольку PouchDB находится внутри браузера, нет необходимости выполнять запросы по сети, это приводит к более быстрому выполнению запросов.
Вы можете синхронизировать данные с любым из поддерживаемых серверов и, тем самым, запускать приложения как в сети, так и в автономном режиме.
Браузеры, поддерживающие PouchDB
Ниже приведены браузеры, которые поддерживают PouchDB —
- Firefox 29+ (включая Firefox OS и Firefox для Android)
- Chrome 30+
- Safari 5+
- Internet Explorer 10+
- Опера 21+
- Android 4.0+
- iOS 7.1+
- Windows Phone 8+
PouchDB — Окружающая среда
В этой главе объясняется, как загрузить и установить PouchDB в вашей системе.
Установка PouchDB
Чтобы работать с PouchDB, вам нужно скачать файл .js и включить его в свой скрипт. Ниже приведены шаги для установки PouchDB.
Шаг 1
Посетите домашнюю страницу сайта PouchDB, перейдя по следующей ссылке —
Шаг 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.
Синтаксис
Ниже приведен синтаксис использования конструктора PouchDB. Для этого вам необходимо передать имя базы данных в качестве параметра.
new PouchDB(Database_name)
пример
Для создания базы данных в PouchDB с использованием узла , прежде всего, вам необходимо запросить пакет 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, используя узел, как показано ниже.
C:\PouchDB_Examples>node Create_Database.js
Это создаст базу данных локально (вы можете увидеть папку в текущем каталоге), отображая следующее сообщение.
Database created Successfully.
PouchDB — Информация о базе данных
Вы можете получить основную информацию о базе данных, используя метод с именем 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, используя узел, как показано ниже.
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, используя узел, как показано ниже.
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 — Удалить базу данных
Вы можете удалить базу данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Delete_Database.js
Это удалит базу данных с именем my_database, которая хранится локально, отображая следующее сообщение.
Database Deleted
Удаление удаленной базы данных
Таким же образом вы можете удалить базу данных, которая удаленно хранится на сервере (CouchDB).
Для этого вместо имени базы данных вам нужно передать путь к базе данных, которую требуется удалить, в CouchDB.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >Remote_Database_Delete.js
Это удалит указанную базу данных из PouchDB, отображая следующее сообщение.
Database Deleted
верификация
После выполнения вышеуказанной программы, если вы снова посетите URL, вы получите следующий скриншот. Здесь вы можете наблюдать только две базы данных, так как my_database был удален.
PouchDB — Создать документ
Вы можете создать документ в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Create_Document.js
Это создает данный документ в базе данных PouchDB с именем my_database , который хранится локально, отображая следующее сообщение.
Document created Successfully
Вставка документа в удаленную базу данных
Вы также можете вставить документ в базу данных, которая удаленно хранится на сервере (CouchDB).
Для этого вместо имени базы данных вам нужно передать путь к базе данных, в которой вы хотите создавать документы в CouchDB.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Create_Document.js
Это создает данный документ в базе данных PouchDB с именем my_database, который хранится в CouchDB, с отображением следующего сообщения.
Document created Successfully
верификация
После выполнения вышеуказанной программы, если вы снова посетите my_database , вы можете наблюдать за созданным документом, как показано на следующем снимке экрана.
PouchDB — Читать документ
Вы можете прочитать / получить содержимое документа в PouchDB, используя метод db.get () .
Синтаксис
Ниже приведен синтаксис использования метода db.get () для PouchDB. Этот метод принимает идентификатор документа и дополнительную функцию обратного вызова.
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, которая содержит документ, который должен быть прочитан.
пример
Предположим, на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Read_Document.js
Это читает содержимое данного документа, который существует в базе данных с именем my_database, которая хранится в CouchDB. Следующее сообщение отображается на консоли.
{ _id: '001', _rev: '3-552920d1ca372986fad7b996ce365f5d', name: 'Raju', age: 23, designation: 'Designer' }
PouchDB — обновить документ
Всякий раз, когда мы создаем документ в PouchDB, создается новое поле _rev , которое называется маркером ревизии . Значение _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, используя узел, как показано ниже.
C:\Pouch_Examples>node Update_Document.js
Это обновляет содержимое данного документа, который существует в базе данных с именем my_database, которая хранится локально. Следующее сообщение отображается на консоли.
{ name: 'Raju', age: 26, designation: 'Designer', _id: '001', _rev: '2-61b523ccdc4e41a8435bdffbb057a7a5' }
Обновление документа в удаленной базе данных
Вы также можете обновить существующий документ в базе данных, которая удаленно хранится на сервере (CouchDB).
Для этого вместо имени базы данных вам нужно передать путь к базе данных в CouchDB, которая содержит документ, который должен быть обновлен.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Update_Document.js
Это обновляет содержимое данного документа, который существует в базе данных с именем my_database, которая хранится в CouchDB. Следующее сообщение отображается на консоли.
{ _id: '001', _rev: '2-b9640bffbce582c94308905eed8bb545', name: 'Raju', age: 26, designation: 'Designer' }
PouchDB — Удалить документ
Вы можете удалить документ из базы данных, которая существует в PouchDB, используя метод db.remove () .
Синтаксис
Ниже приведен синтаксис использования метода db.remove () PouchDB. Для этого метода мы должны передать id и _rev, чтобы удалить существующий документ, как показано в следующем коде. Этот метод принимает дополнительную функцию обратного вызова. Мы также можем передать полный документ вместо id и _rev.
db. get ( docId, docRev, [callback] ) or db. get ( docId, docRev, [callback] )
пример
Предположим, у нас есть документ в PouchDB с идентификатором 001, в котором есть данные о человеке. Чтобы удалить этот документ вместе с его идентификатором, у нас также должен быть номер _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 и id документа, вы можете удалить это, используя метод 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Delete_Document.js
Это удаляет содержимое данного документа, который существует в базе данных с именем my_database, которая хранится локально. Появится следующее сообщение.
Document deleted successfully
Удаление документа из удаленной базы данных
Вы также можете удалить существующий документ из базы данных, которая удаленно хранится на сервере (CouchDB).
Для этого вместо имени базы данных вам нужно передать путь к базе данных в CouchDB, которая содержит документ, который должен быть прочитан.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Delete_Document.js
Это удаляет данный документ, который существует в базе данных с именем my_database, которая хранится в CouchDB. Появится следующее сообщение.
Document deleted successfully
PouchDB — Создать пакет
Вы можете создать массив (пакет) документов в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Create_Batch.js
Это создает данный документ в базе данных PouchDB с именем my_database, который хранится локально. Появится следующее сообщение.
Documents created Successfully
Вставка пакета в удаленную базу данных
Вы можете вставить массив документов в базу данных, которая удаленно хранится на сервере (CouchDB).
Для этого вместо имени базы данных вам нужно передать путь к базе данных, где мы хотим создавать документы в CouchDB.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Create_Batch.js
Это создает данные документы в базе данных PouchDB с именем my_database, которая хранится в CouchDB. Появится следующее сообщение.
Document created Successfully
верификация
После запуска вышеуказанной программы, если вы снова посетите my_database , вы можете наблюдать за созданными документами, как показано на следующем снимке экрана.
PouchDB — Fetch Batch
Вы можете читать / извлекать несколько / массовых документов из базы данных в 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, используя узел, как показано ниже.
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 true, как показано ниже.
//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, которая содержит документ, который должен быть прочитан.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
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 — Пакет обновления
Вы можете сразу обновить массив документов в 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'}
Предположим, нам нужно увеличить возрастные значения во всех 3 документах на 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, которая содержит документ, который должен быть прочитан.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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 — Удалить пакет
Вы можете сразу удалить массив документов в 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, которая содержит документ, который должен быть прочитан.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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
PouchDB — Добавление вложения
Вы можете прикрепить двоичный объект к документу, используя метод putAttachment () в PouchDB.
Синтаксис
Ниже приводится синтаксис метода putAttachment () . Для этого метода мы должны передать идентификатор документа, идентификатор вложения, MIME-тип вместе с вложением. Этот метод также принимает дополнительную функцию обратного вызова.
db.putAttachment( docId, attachmentId, attachment, type, [callback] );
Мы можем подготовить вложение, используя объекты blob или buffer, где blob используется при работе с браузером, а буфер используется при работе с 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, используя узел, как показано ниже.
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 , изменив значение идентификатора на 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, используя узел, как показано ниже.
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, которая содержит документ, который должен быть прочитан.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Add_Attachment.js
Это добавит вложение к указанному документу, отображающее следующее сообщение.
Attachment added successfully
Теперь, если вы проверите документ, вы можете увидеть добавленное к нему вложение, как показано на следующем снимке экрана.
PouchDB — получение вложения
Вы можете получить вложение из 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Retrieve_Attachment.js
Это извлекает вложение документа и отображается на консоли, как показано ниже.
<Buffer 00>
Получение вложения из удаленного документа
Вы также можете получить вложение документа, существующего в базе данных, который удаленно хранится на сервере (CouchDB).
Для этого вместо имени базы данных вам нужно передать путь к базе данных в CouchDB, которая содержит документ, который должен быть прочитан.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Retrieve_Attachment.js
Это извлекает вложение документа и отображает его на консоли, как показано ниже.
<Buffer 00>
PouchDB — удаление вложения
Вы можете удалить вложение из 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, используя узел, как показано ниже.
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, которая содержит документ, который должен быть прочитан.
пример
Предположим, что на сервере CouchDB есть база данных с именем my_database . Затем, если вы проверите список баз данных в 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, используя узел, как показано ниже.
C:\PouchDB_Examples >node Remote_Delete_Attachment.js
Это удаляет существующее вложение и отображает следующее сообщение.
Attachment Deleted successfully
При повторном посещении документа вы можете заметить, что вложение было удалено, как показано на следующем снимке экрана.
PouchDB — Репликация
Одной из наиболее важных функций PouchDB является репликация, то есть вы можете сделать копию базы данных. Вы можете реплицировать либо экземпляр PouchDB, хранящийся локально, либо экземпляр CouchDB, хранящийся удаленно.
Синтаксис
Ниже приведен синтаксис репликации базы данных в PouchDB. Здесь, копия исходной базы данных является целью. В этом методе вы можете напрямую передавать местоположение исходной и целевой баз данных в формате String или передавать объекты, представляющие их.
PouchDB.replicate(source, target, [options])
И источник, и цель могут быть экземплярами PouchDB или CouchDB.
Репликация LocalDB в CouchDB
Предположим, что в PouchDB есть база данных с именем sample_database , и она содержит 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, используя узел, как показано ниже.
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
Предположим, что в CouchDB есть база данных с именем Remote_Database, и она содержит 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, используя узел, как показано ниже.
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 — Синхронизация
Вы можете синхронизировать базы данных, хранящиеся локально в PouchDB, с базами данных, которые хранятся в CouchDB. В предыдущей главе мы видели, как реплицировать базы данных с использованием PouchDB. Там мы использовали метод PouchDB.replicate (источник, место назначения) .
В дополнение к этому мы также можем реплицировать данные из локальной базы данных в удаленную базу данных и из удаленной базы данных в локальную базу данных, используя методы 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.
пример
Предположим, что в PouchDB есть база данных с именем local_database , и она содержит 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, используя узел, как показано ниже.
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 — Разное
В этой главе мы обсудим такие понятия, как сжатие и извлечение объемных данных из 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.