77
88IndexedDB - ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
, Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡΠ½Π°Ρ, ΡΠ΅ΠΌ ` localStorage ` .
99
10- - Π₯ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ/Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ: Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΠΊΠ»ΡΡΠ΅ΠΉ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ (ΠΏΠΎΡΡΠΈ) Π»ΡΠ±ΡΠΌΠΈ.
10+ - Π₯ΡΠ°Π½ΠΈΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π»ΡΠ±ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΠΊΠ»ΡΡΠ΅ΠΉ
1111- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π΄Π»Ρ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΠΈ.
1212- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π·Π°ΠΏΡΠΎΡΡ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ.
1313- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Ρ
ΡΠ°Π½ΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π°Π½Π½ΡΡ
, ΡΠ΅ΠΌ ` localStorage ` .
@@ -18,6 +18,12 @@ IndexedDB - ΡΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
, Π±ΠΎΠ»Π΅Π΅ ΠΌΠΎΡ
1818
1919ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ` async/await ` Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΡΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΏΡΠΎΠΌΠΈΡΠ°Ρ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ < https://github.com/jakearchibald/idb > . ΠΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ, Π½ΠΎ ΠΎΠ±ΡΡΡΠΊΠ° Π½Π΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½Π°, ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π½Π°ΡΠ½ΡΠΌ Ρ ΡΠΎΠ±ΡΡΠΈΠΉ, Π° Π·Π°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ Π² IndexedDB, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΈ ΠΎΠ±ΡΡΡΠΊΡ.
2020
21+ ``` smart header="ΠΠ΄Π΅ Ρ
ΡΠ°Π½ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅?"
22+ Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ Ρ
ΡΠ°Π½ΡΡΡΡ Π² Π΄ΠΎΠΌΠ°ΡΠ½Π΅ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ Ρ.Π΄.
23+
24+ Π£ ΡΠ°Π·Π½ΡΡ
Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ² ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΠ‘ Π΅ΡΡΡ ΡΠ²ΠΎΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
25+ ```
26+
2127## ΠΡΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
2228
2329ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ Ρ IndexedDB Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
.
@@ -46,7 +52,9 @@ let openRequest = indexedDB.open(name, version);
4652
4753ΠΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π΅ΡΠ»ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π΅ΡΡ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠ°ΠΊ ΡΡΠΎ Π² ΡΡΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
4854
49- ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ Π½Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΡ ΠΎΡΠΊΡΡΠ²Π°Π΅ΠΌ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ ` 1 ` ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ` upgradeneeded ` :
55+ ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΌΡ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΠΏΠ΅ΡΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
56+
57+ ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ ` 1 ` ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ` upgradeneeded ` Π²ΠΎΡ ΡΠ°ΠΊ:
5058
5159``` js
5260let openRequest = indexedDB .open (" store" , * ! * 1 */ ! * );
@@ -66,12 +74,13 @@ openRequest.onsuccess = function() {
6674};
6775```
6876
69- ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ Π²ΡΠΎΡΡΡ Π²Π΅ΡΡΠΈΡ:
77+ ΠΠ°ΡΠ΅ΠΌ, ΠΏΠΎΠ·ΠΆΠ΅, ΠΌΡ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅ΠΌ 2-Ρ Π²Π΅ΡΡΠΈΡ.
78+
79+ ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠΊΡΡΡΡ Π΅Π³ΠΎ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ ` 2 ` ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
7080
7181``` js
7282let openRequest = indexedDB .open (" store" , * ! * 2 */ ! * );
7383
74- // ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ:
7584openRequest .onupgradeneeded = function (event ) {
7685 // Π²Π΅ΡΡΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΌΠ΅Π½ΡΡΠ΅ 2 (ΠΈΠ»ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ)
7786 let db = openRequest .result ;
@@ -109,9 +118,12 @@ let deleteRequest = indexedDB.deleteDatabase(name)
109118
110119Π Π°Π· ΡΠΆ ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΡΠΎ Π²Π΅ΡΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΡΠΈΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
111120
112- ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΠΎΡΠΊΡΡΠ» Π½Π°Ρ ΡΠ°ΠΉΡ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Ρ Π±Π°Π·ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ 1.
121+ ΠΠΎΠΏΡΡΡΠΈΠΌ:
122+ 1 . ΠΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΠΎΡΠΊΡΡΠ» Π½Π°Ρ ΡΠ°ΠΉΡ Π²ΠΎ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Ρ Π±Π°Π·ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ` 1 ` .
123+ 2 . ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠΏΡΡΡΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΡΠ°ΠΊ ΡΡΠΎ Π½Π°Ρ ΠΊΠΎΠ΄ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΡΡ.
124+ 3 . Π Π·Π°ΡΠ΅ΠΌ ΡΠΎΡ ΠΆΠ΅ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΠΎΡΠΊΡΡΠ» Π½Π°Ρ ΡΠ°ΠΉΡ Π² Π΄ΡΡΠ³ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅.
113125
114- ΠΠ°ΡΠ΅ΠΌ ΠΌΡ Π²ΡΠΊΠ°ΡΠΈΠ»ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅, ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΠΎΡΠΊΡΡΠ» Π½Π°Ρ ΡΠ°ΠΉΡ Π² Π΄ΡΡΠ³ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅. Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΡΡ Π΄Π²Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ
ΠΎΡΠΊΡΡΡ Π½Π°Ρ ΡΠ°ΠΉΡ, Π½ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠΊΡΡΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ 1, Π° Π΄ΡΡΠ³Π°Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Π±Π°Π·Ρ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ` upgradeneeded ` .
126+ Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΡΡ Π΄Π²Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ
ΠΎΡΠΊΡΡΡ Π½Π°Ρ ΡΠ°ΠΉΡ, Π½ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠΊΡΡΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ 1, Π° Π΄ΡΡΠ³Π°Ρ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΡΠΈΡ Π±Π°Π·Ρ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ` upgradeneeded ` .
115127
116128ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Π° Π½Π° Π΄Π²Π΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ°ΠΉΡ, ΠΎΠ΄ΠΈΠ½ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ. Π ΠΎΠ½Π° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²Π΅ΡΡΠΈΠΈ 1 ΠΈ 2. Π§ΡΠΎΠ±Ρ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π½Π° Π²Π΅ΡΡΠΈΡ 2, Π²ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΊ Π²Π΅ΡΡΠΈΠΈ 1 Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΊΡΡΡΡ.
117129
@@ -133,27 +145,31 @@ openRequest.onsuccess = function() {
133145 * ! *
134146 db .onversionchange = function () {
135147 db .close ();
136- alert (" ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ
ΡΡΡΠ°ΡΠ΅Π»Π°, ΠΏΠΎΠΆΠ°Π»ΡΡΡΠ°, ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ." )
148+ alert (" Database is outdated, please reload the page ." )
137149 };
138150 */ ! *
139151
140- // ...Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
Π΄ΠΎΡΡΡΠΏΠ½Π° ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ db ...
152+ // ...Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
Π³ΠΎΡΠΎΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΅Π΅ ...
141153};
142154
143155* ! *
144156openRequest .onblocked = function () {
145- // Π΅ΡΡΡ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠΎΠΉ ΠΆΠ΅ Π±Π°Π·Π΅
146- // ΠΈ ΠΎΠ½ΠΎ Π½Π΅ Π±ΡΠ»ΠΎ Π·Π°ΠΊΡΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ Π½Π° Π½ΡΠΌ db.onversionchange
157+ // ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌ onversionchange
158+
159+ // ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΠΊΡΡΡΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΠΎΠΉ ΠΆΠ΅ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
160+ // ΠΈ ΠΎΠ½ Π½Π΅ Π±ΡΠ» Π·Π°ΠΊΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π΄Π»Ρ Π½Π΅Π³ΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π» db.onversionchange
147161};
148162*/ ! *
149163```
150164
151- ΠΠ΄Π΅ΡΡ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π²Π΅ Π²Π΅ΡΠΈ:
165+ ...ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π·Π΄Π΅ΡΡ ΠΌΡ Π΄Π΅Π»Π°Π΅ΠΌ Π΄Π²Π΅ Π²Π΅ΡΠΈ:
152166
153- 1 . ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ` db.onversionchange ` ΠΏΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠΊΡΡΡΠΈΡ Π±Π°Π·Ρ, ΡΡΠΎΠ±Ρ ΡΠ·Π½Π°ΡΡ ΠΎ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ .
154- 2 . ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ` openRequest .onblocked` Π΄Π»Ρ ΡΠΈΡΡΠ°ΡΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°ΡΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡΠ»ΠΎ Π·Π°ΠΊΡΡΡΠΎ. Π’Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ` db.onversionchange ` .
167+ 1 . ΠΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ ` db.onversionchange ` ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ ΠΎ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΡΡΡΠ°ΡΠ΅Π»Π° .
168+ 2 . ΠΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ ` OpenRequest .onblocked` ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π½Π°ΠΌ ΠΎΠ± ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ: Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅ Π΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ, ΠΈ ΠΎΠ½ΠΎ Π½Π΅ Π·Π°ΠΊΡΡΠ²Π°Π΅ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ .
155169
156- ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ "ΠΌΡΠ³ΠΊΠΎ" Π·Π°ΠΊΡΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π² ` db.onversionchange ` , ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠΈΠΌ. ΠΠΎΠ²ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΠ΅Π΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ` db.onversionchange ` Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, Π½Π΅ Π·Π°ΠΊΡΡΠ² ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π² Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ ΠΏΠΎΠΏΡΠΎΡΠΈΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ Π·Π°ΠΊΡΡΡΡ ΡΡΠ°ΡΡΠ΅ Π΄Π»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
170+ ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·ΡΡΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Ρ Π²Π΅ΡΠ°ΠΌΠΈ Π² ` db.onversionchange ` , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ Π΄ΠΎ Π·Π°ΠΊΡΡΡΠΈΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
171+
172+ ΠΠ»ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π² ` db.onversionchange ` , Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ` onblocked ` (Π½Π° Π½ΠΎΠ²ΠΎΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅), ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅Π΄ΠΈΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ, ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Π°, ΠΏΠΎΠΊΠ° ΠΎΠ½ΠΈ Π½Π΅ Π·Π°ΠΊΡΠΎΡΡ Π΄ΡΡΠ³ΠΈΠ΅ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ.
157173
158174Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΡΠ΅Π΄ΠΊΠΎ, Π½ΠΎ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΊΠ°ΠΊ-ΡΠΎ Π΅Π³ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ, Ρ
ΠΎΡΡ Π±Ρ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ` onblocked ` , ΡΡΠΎΠ±Ρ Π½Π°Ρ ΡΠΊΡΠΈΠΏΡ Π½Π΅ "ΡΠΌΠΈΡΠ°Π»" ΠΌΠΎΠ»ΡΠ°, ΡΠ΄ΠΈΠ²Π»ΡΡ ΠΏΠΎΡΠ΅ΡΠΈΡΠ΅Π»Ρ.
159175
@@ -182,6 +198,7 @@ IndexedDB ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ [ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠ΅ΡΠΈ
182198ΠΠΎ Π΄Π»Ρ Π½Π°ΡΠ°Π»Π° Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
183199
184200Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²:
201+
185202``` js
186203db .createObjectStore (name[, keyOptions]);
187204```
@@ -196,6 +213,7 @@ db.createObjectStore(name[, keyOptions]);
196213ΠΡΠ»ΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ ` keyOptions ` , ΡΠΎ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ»ΡΡ ΠΏΠΎΠ·ΠΆΠ΅, ΠΏΡΠΈ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
197214
198215ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ` id ` ΠΊΠ°ΠΊ ΠΊΠ»ΡΡ:
216+
199217``` js
200218db .createObjectStore (' books' , {keyPath: ' id' });
201219```
@@ -205,6 +223,7 @@ db.createObjectStore('books', {keyPath: 'id'});
205223ΠΡΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅. ΠΠ½Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ/ΡΠ΄Π°Π»ΡΡΡ/ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅, Π½ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ·Π΄Π°Π½Ρ/ΡΠ΄Π°Π»Π΅Π½Ρ/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
.
206224
207225ΠΠ»Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΈ Π±Π°Π·Ρ Π΅ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π°:
226+
2082271 . ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎ Π²Π΅ΡΡΠΈΡΠΌ: Ρ 1 Π½Π° 2, Ρ 2 Π½Π° 3 ΠΈ Ρ.Π΄. ΠΠΎΡΠΎΠΌ Π² ` upgradeneeded ` ΡΡΠ°Π²Π½ΠΈΡΡ Π²Π΅ΡΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΡΠ»Π° 2, ΡΠ΅ΠΉΡΠ°Ρ 4) ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ (2 Π½Π° 3, Π·Π°ΡΠ΅ΠΌ 3 Π½Π° 4).
2092282 . ΠΠ»ΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²Π·ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ
Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ` db.objectStoreNames ` . ΠΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ [ DOMStringList] ( https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#domstringlist ) , Π² Π½ΡΠΌ Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ ` contains(name) ` , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΅ΡΡΡ ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅, ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ.
210229
@@ -224,7 +243,6 @@ openRequest.onupgradeneeded = function() {
224243};
225244```
226245
227-
228246Π§ΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²:
229247
230248``` js
@@ -238,6 +256,7 @@ db.deleteObjectStore('books')
238256Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ - ΡΡΠΎ Π³ΡΡΠΏΠΏΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΈΠ»ΠΈ Π²ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ, ΠΈΠ»ΠΈ Π²ΡΠ΅ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ (Π²ΡΡ ΠΈΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ).
239257
240258ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠΊΡΠΏΠ°Π΅Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ:
259+
2412601 . ΠΡΡΠ΅ΡΡΡ Π΄Π΅Π½ΡΠ³ΠΈ Ρ Π΅Π³ΠΎ ΡΡΡΡΠ°.
2422612 . ΠΡΠΏΡΠ°Π²ΠΈΡΡ Π΅ΠΌΡ ΠΏΠΎΠΊΡΠΏΠΊΡ.
243262
@@ -460,10 +479,13 @@ request.onerror = function(event) {
460479## ΠΠΎΠΈΡΠΊ ΠΏΠΎ ΠΊΠ»ΡΡΠ°ΠΌ
461480
462481ΠΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
Π²ΠΈΠ΄Π° ΠΏΠΎΠΈΡΠΊΠ° Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²:
463- 1 . ΠΠΎ ΠΊΠ»ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΠΊΠ»ΡΡΠ΅ΠΉ. Π’ΠΎ Π΅ΡΡΡ: ΠΏΠΎ ` book.id ` Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ "books".
464- 2 . ΠΠΎ ΠΏΠΎΠ»ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ` book.price ` .
465482
466- Π‘Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΡΠΌΡΡ Ρ ΠΊΠ»ΡΡΠ°ΠΌΠΈ ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΊΠ»ΡΡΠ΅ΠΉ ` (1) ` .
483+ 1 . ΠΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ° ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ ΠΊΠ»ΡΡΠ΅ΠΉ. Π Π½Π°ΡΠ΅ΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ "books" ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ` book.id ` .
484+ 2 . Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ` book.price ` . ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ
, ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ°Ρ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ "index".
485+
486+ ### ΠΠΎ ΠΊΠ»ΡΡΡ
487+
488+ Π‘Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ Ρ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠΈΠΏΠΎΠΌ ΠΏΠΎΠΈΡΠΊΠ°: ΠΏΠΎ ΠΊΠ»ΡΡΡ.
467489
468490ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π»ΠΈΠ±ΠΎ ΡΠΎΡΠ½ΡΠ΅ ΠΊΠ»ΡΡΠΈ, Π»ΠΈΠ±ΠΎ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ "Π·Π°ΠΏΡΠΎΡΡ Ρ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ" -- [ IDBKeyRange] ( https://www.w3.org/TR/IndexedDB/#keyrange ) ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°Π΄Π°ΡΡ "Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΊΠ»ΡΡΠ΅ΠΉ".
469491
@@ -474,7 +496,9 @@ request.onerror = function(event) {
474496- ` IDBKeyRange.bound(lower, upper, [lowerOpen], [upperOpen]) ` ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ: ΠΌΠ΅ΠΆΠ΄Ρ ` lower ` ΠΈ ` upper ` , Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ` open ` ΡΠ°Π²Π΅Π½ ` true ` .
475497- ` IDBKeyRange.only(key) ` -- Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΡΠΎΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° ` key ` , ΡΠ΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
476498
477- ΠΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ` query ` , ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ ΡΠΎΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ, Π»ΠΈΠ±ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΊΠ»ΡΡΠ΅ΠΉ:
499+ ΠΡΠ΅Π½Ρ ΡΠΊΠΎΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
500+
501+ ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΠ½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ` query ` , ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΠΈΠ±ΠΎ ΡΠΎΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ, Π»ΠΈΠ±ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΊΠ»ΡΡΠ΅ΠΉ:
478502
479503- ` store.get(query) ` -- ΠΏΠΎΠΈΡΠΊ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΊΠ»ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ.
480504- ` store.getAll([query], [count]) ` -- ΠΏΠΎΠΈΡΠΊ Π²ΡΠ΅Ρ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² ` count ` .
@@ -509,7 +533,6 @@ books.getAllKeys(IDBKeyRange.lowerBound('js', true))
509533ΠΠΎΡΡΠΎΠΌΡ Π·Π°ΠΏΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΈΡ
Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΠΊΠ»ΡΡΡ.
510534```
511535
512-
513536## ΠΠΎΠΈΡΠΊ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΠΏΠΎΠ»Ρ
514537
515538ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ "ΠΈΠ½Π΄Π΅ΠΊΡ" (index).
@@ -592,6 +615,7 @@ let request = priceIndex.getAll(IDBKeyRange.upperBound(5));
592615- ** ` delete(query) ` ** -- ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ
Π·Π°ΠΏΡΠΎΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
593616
594617ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
618+
595619``` js
596620// ΡΠ΄Π°Π»ΠΈΡΡ ΠΊΠ½ΠΈΠ³Ρ Ρ id='js'
597621books .delete (' js' );
@@ -610,6 +634,7 @@ request.onsuccess = function() {
610634```
611635
612636Π§ΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π²ΡΡ:
637+
613638``` js
614639books .clear (); // ΠΎΡΠΈΡΠ°Π΅ΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
615640```
@@ -618,9 +643,7 @@ books.clear(); // ΠΎΡΠΈΡΠ°Π΅ΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
618643
619644Π’Π°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ°ΠΊ ` getAll/getAllKeys ` Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠ»ΡΡΠ΅ΠΉ/Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
620645
621- ΠΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ, Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΏΠ°ΠΌΡΡΠΈ.
622-
623- Π’ΠΎΠ³Π΄Π° ΠΌΠ΅ΡΠΎΠ΄ ` getAll ` Π²Π΅ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
646+ ΠΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌ, Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΠΏΠ°ΠΌΡΡΠΈ. Π’ΠΎΠ³Π΄Π° ΠΌΠ΅ΡΠΎΠ΄ ` getAll ` Π²Π΅ΡΠ½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅.
624647
625648Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ?
626649
@@ -631,6 +654,7 @@ books.clear(); // ΠΎΡΠΈΡΠ°Π΅ΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
631654Π’Π°ΠΊ ΠΊΠ°ΠΊ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²Π½ΡΡΡΠ΅Π½Π½Π΅ ΠΎΡΡΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΏΠΎ ΠΊΠ»ΡΡΡ, ΠΊΡΡΡΠΎΡ ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ΅ΠΉ (ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ).
632655
633656Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
657+
634658``` js
635659// ΠΊΠ°ΠΊ getAll, Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΡΡΡΠΎΡΠ°:
636660let request = store .openCursor ([query], [direction]);
@@ -728,7 +752,6 @@ try {
728752} catch (err) {
729753 console .log (' ΠΎΡΠΈΠ±ΠΊΠ°' , err .message );
730754}
731-
732755```
733756
734757Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ "ΠΏΠ»ΠΎΡΠΊΠΈΠΉ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ" ΠΊΠΎΠ΄ ΠΈ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ` try..catch ` .
@@ -771,6 +794,7 @@ await inventory.add({ id: 'js', price: 10, created: new Date() }); // ΠΡΠΈΠ±ΠΊ
771794Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ` inventory.add ` ΠΏΠΎΡΠ»Π΅ ` fetch ` ` (*) ` Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΡΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΎΡΠΈΠ±ΠΊΠ° "inactive transaction", ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠΆΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½Π° ΠΈ Π·Π°ΠΊΡΡΡΠ° ΠΊ ΡΡΠΎΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
772795
773796Π Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ΅ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌ IndexedDB: Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ, Π»ΠΈΠ±ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π·Π°Π΄Π°ΡΡ Π½Π° ΡΠ°ΡΡΠΈ.
797+
7747981 . ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΡ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ.
7757992 . ΠΠ°ΡΠ΅ΠΌ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
.
776800
@@ -803,8 +827,7 @@ IndexedDB ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ "localStorage Π½Π° ΡΡΠ΅
803827
8048281 . ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΡΡΠΊΡ Π½Π°Π΄ ΠΏΡΠΎΠΌΠΈΡΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ [ idb] ( https://github.com/jakearchibald/idb ) .
8058292 . ΠΡΠΊΡΡΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
: ` idb.openDb(name, version, onupgradeneeded) `
806- - Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ` onupgradeneeded ` .
807- - ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ - Π»ΠΈΠ±ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°Ρ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π΅ΡΡΠΈΠΉ, Π»ΠΈΠ±ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π° ΡΡΠΎ Π½Π΅Ρ.
830+ - Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ` onupgradeneeded ` ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ
8088313 . ΠΠ»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ²:
809832 - Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ` db.transaction('books') ` (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ readwrite, Π΅ΡΠ»ΠΈ Π½Π°Π΄ΠΎ).
810833 - ΠΠΎΠ»ΡΡΠΈΡΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ` transaction.objectStore('books') ` .
0 commit comments