- PouchDB 教程
- PouchDB - 首頁
- PouchDB - 概述
- PouchDB - 環境
- PouchDB - 建立資料庫
- PouchDB - 資料庫資訊
- PouchDB - 刪除資料庫
- PouchDB - 建立文件
- PouchDB - 讀取文件
- PouchDB - 更新文件
- PouchDB - 刪除文件
- PouchDB - 建立批處理
- PouchDB - 獲取批處理
- PouchDB - 批次更新
- PouchDB - 刪除批處理
- PouchDB - 新增附件
- PouchDB - 獲取附件
- PouchDB - 刪除附件
- PouchDB - 複製
- PouchDB - 同步
- PouchDB - 其他
- PouchDB 有用資源
- PouchDB - 快速指南
- PouchDB - 有用資源
- PouchDB - 討論
PouchDB - 批次更新
您可以使用bulkDocs()方法一次更新 PouchDB 中的一組文件。為此,您需要建立一個文件陣列,其中每個文件包含_id、_rev以及要更新的值。
假設名為my_database的資料庫儲存在 PouchDB 中的本地,包含三個名為 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的檔案中。開啟命令提示符並使用 node 執行 JavaScript 檔案,如下所示。
C:\PouchDB_Examples >node Update_All_Document.js
這將更新儲存在本地名為my_database的資料庫中所有存在的文件,並顯示以下訊息。
Documents Updated Successfully
現在,如果您在回撥之前將{include_docs: true}作為引數新增到allDocs()函式中執行bulk_fetch.js程式,那麼您將可以看到文件更新後的值,如下所示。
[
{
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的資料庫。然後,如果您使用 URL http://127.0.0.1:5984/_utils/index.html驗證 CouchDB 中的資料庫列表,您將獲得以下螢幕截圖。
並且假設如果我們選擇名為my_database的資料庫,您可以觀察到它包含 3 個文件,如下面的螢幕截圖所示。
現在,使用以下程式碼獲取這些文件的內容。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('https://: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'
}
}
]
以下是更新儲存在 CouchDB 伺服器中名為my_database的資料庫中所有現有文件的示例。
//Requiring the package
var PouchDB = require('PouchDB');
//Creating the database object
var db = new PouchDB('https://: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的檔案中。開啟命令提示符並使用 node 執行 JavaScript 檔案,如下所示。
C:\PouchDB_Examples >node Remote_Update_Document.js
這將更新儲存在 CouchDB 中名為my_database的資料庫中所有給定文件的內容,並顯示以下訊息。
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
}
}
]