PouchDB - aktualizacja dokumentu

Zawsze, gdy tworzymy dokument w PouchDB, nowe pole _rev jest generowany i jest znany jako revision marker. Plik_revWartość to niepowtarzalna liczba losowa, za każdym razem, gdy wprowadzamy zmiany w dokumencie, których wartość _rev jest zmieniony.

Możesz zaktualizować istniejący dokument w PouchDB za pomocą (_rev). Aby to zrobić, najpierw pobierz plik_revwartość dokumentu, który chcemy zaktualizować. Teraz umieść zawartość, która ma zostać zaktualizowana, wraz z pobraną_rev value w nowym dokumencie, a na koniec wstaw ten dokument do PouchDB przy użyciu rozszerzenia put() metoda.

Przykład

Załóżmy, że mamy dokument w PouchDB o identyfikatorze 001który zawiera dane osoby. Aby zaktualizować ten dokument, powinniśmy mieć jego numer rewizji. Dlatego w celu pobrania zawartości dokumentu używany jest następujący kod.

//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);
   }
});

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe.

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

Teraz używając _rev możesz zaktualizować wartość klucza „age”Do 26, jak pokazano w poniższym kodzie.

//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);
   }
});

Zapisz powyższy kod w pliku o nazwie Update_Document.js. Otwórz wiersz polecenia i uruchom plik JavaScript za pomocąnode jak pokazano niżej.

C:\Pouch_Examples>node Update_Document.js

Spowoduje to zaktualizowanie zawartości danego dokumentu, który istnieje w bazie danych o nazwie my_databasektóry jest przechowywany lokalnie. Na konsoli zostanie wyświetlony następujący komunikat.

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

Aktualizacja dokumentu w zdalnej bazie danych

Możesz także zaktualizować istniejący dokument w bazie danych, która jest zdalnie przechowywana na serwerze (CouchDB).

W tym celu zamiast nazwy bazy danych należy podać ścieżkę do bazy danych w CouchDB, w której znajduje się dokument przeznaczony do aktualizacji.

Przykład

Załóżmy, że istnieje baza danych o nazwie my_databasena serwerze CouchDB. Następnie, jeśli zweryfikujesz listę baz danych w CouchDB za pomocą adresu URLhttp://127.0.0.1:5984/_utils/index.html otrzymasz następujący zrzut ekranu.

Klikając na bazę danych o nazwie my_database, możesz zobaczyć następujący zrzut ekranu. Tutaj możesz zauważyć, że ta baza danych zawiera dokument o identyfikatorze001.

Poniżej znajduje się przykład aktualizacji wieku dokumentu o identyfikatorze „001”, Który istnieje w bazie danych o nazwie my_database który jest przechowywany na serwerze 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);
   }
});

Zapisz powyższy kod w pliku o nazwie Remote_Update_Document.js. Otwórz wiersz polecenia i uruchom plik JavaScript za pomocąnode jak pokazano niżej.

C:\PouchDB_Examples >node Remote_Update_Document.js

Spowoduje to zaktualizowanie zawartości danego dokumentu, który istnieje w bazie danych o nazwie my_databasektóry jest przechowywany w CouchDB. Na konsoli zostanie wyświetlony następujący komunikat.

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