Constructor
new UBCache(dbName, versionopt)
Arguments:
-
dbName
(String)
 Name of indexedDB database we create. Usually this isUBConnection#baseURL
. Constructor lower case dbName during creation -
[version]
(Number)
 Optionally database version.
Members
SESSION: String
static
readonly
SESSION store name
PERMANENT: String
static
readonly
PERMANENT store name
cacheTypes
static
readonly
Possible cache types for businnes logic data
Properties:
Name | Type | Description |
---|---|---|
None |
String | Кэширование не осуществляется. Запрос на сервер отправляется всегда. |
Entity |
String | Кэширование осуществляется на уровне сущности. Запрос на сервер отправляется всегда. При этом в запрос добавляется версия закэшированных данных, если таковые имеются.
Результат запроса содержит
или данные и версию данных, которые помещаются в кэш;
или флаг notModified. В этом случае данные считываются из кэша.
Если в запросе в whereList присутствует ID - кэширование не осуществляется. Запрос на сервер отправляется всегда. |
Session |
String | Кэширование осуществляется на уровне сессии. Запрос на сервер отправляется только один раз при старте сессии. При старте сессии все закэшированные сущности удаляются из кэша.
Если в запросе в whereList присутствует ID - кэширование не осуществляется. Запрос на сервер отправляется всегда. |
SessionEntity |
String | Кеширование осуществляется на уровне сессии и сущности. Запрос на сервер отправляетсятолько один раз при старте сессии. При этом в запрос добавляется версия закэшированных данных, если таковые имеются.
Результат запроса содержит
или данные и версию данных, которые помещаются в кэш;
или флаг notModified. В этом случае данные считываются из кэша.
Если в запросе в whereList присутствует ID - кэширование не осуществляется. Запрос на сервер отправляется всегда. |
Methods
onTransactionComplete()
Predefined callback functions, called when indexedDB transaction complete.
Can be customized after UBCache is created.
Default implementation will do nothing
onTransactionAbort()
Predefined callback functions, called when indexedDB transaction aborted.
Can be customized after UBCache is created.
Default implementation will put error to log
onTransactionError()
Predefined callback functions, called when error occurred during indexedDB transaction.
Can be customized after UBCache is created.
Default implementation will put error to log
get(key, storeNameopt) → Promise
Retrieve data from store by key. If key not found - resolve result to undefined
Arguments:
getAllKeys(storeNameopt) → Promise
Retrieves all values from store. This is slow operation - try to avoid it
Arguments:
-
[storeName]
(String)
 default to 'userData'
put(data, storeNameopt) → Promise
Put one or several values to store (in single transaction).
Modifies existing values or inserts as new value if nonexistent.
If value === undefined
we put null instead, to understand in future get this is null value or key not exist
Arguments:
-
data
(Object|Array.<{key: string, value}>)
-
[storeName]
 default to 'userData'
clear(storeNameopt) → Promise
Removes all data from the store
Arguments:
-
[storeName]
(String)
 default to 'userData'
remove(key, storeNameopt) → Promise
Remove data from store.
- If key is String - we delete one key;
- If key is Array - we delete all keys in array;
Arguments:
Example
//remove data with key = 'key1' from userData store
$App.cache.remove('key1').done();
//remove 2 rows: with key = 'key1' and 'key2' from session store
$App.cache.remove(['key1', 'key2'], UBCache.SESSION).done();
removeIfMach(regExp, storeNameopt) → Promise
Remove data from store where keys match regExp.
Internally use UBCache#getAllKeys
so is slow.
Better to use remove([key1, ..keyN])
Arguments:
-
regExp
(RegExp)
-
[storeName]
 default to 'userData'
Example
console.time('removeIfMach');
$App.cache.removeIfMach(/^admin:ru:cdn_/, 'permanent').done(function(){
console.timeEnd('removeIfMach');
})
undefined
[storeName]
(String)
 default to 'userData'
If value === undefined
we put null instead, to understand in future get this is null value or key not exist
data
(Object|Array.<{key: string, value}>)
[storeName]
 default to 'userData'
[storeName]
(String)
 default to 'userData'
Remove data from store.
- If key is String - we delete one key;
- If key is Array - we delete all keys in array;
//remove data with key = 'key1' from userData store
$App.cache.remove('key1').done();
//remove 2 rows: with key = 'key1' and 'key2' from session store
$App.cache.remove(['key1', 'key2'], UBCache.SESSION).done();
UBCache#getAllKeys
so is slow.
Better to use remove([key1, ..keyN])
regExp
(RegExp)
[storeName]
 default to 'userData'
console.time('removeIfMach');
$App.cache.removeIfMach(/^admin:ru:cdn_/, 'permanent').done(function(){
console.timeEnd('removeIfMach');
})