1 // 打开、创建数据库数据库
2 function openDB(dbName, storeName, version = 1) {
3 return new Promise(function (resolve, reject) {
4 let indexedDB = window.indexedDB;
5 let db;
6 const request = indexedDB.open(dbName, version);
7 request.onsuccess = function (event) {
8 db = event.target.result;
9 resolve(db);
10 }
11 request.onerror = function (event) {
12 reject(event);
13 }
14 request.onupgradeneeded = function (event) {
15 // 数据库创建或升级的时候会触发
16 db = event.target.result;
17 let objectStore;
18 if (!db.objectStoreNames.contains(storeName)) {
19 objectStore = db.createObjectStore(storeName, {keyPath: 'id'});
20 }
21 }
22 });
23 }
24
25 // 新增数据
26 function addData(db, storeName, data) {
27 return new Promise(function(resolve, reject){
28 let request = db.transaction([storeName], 'readwrite').objectStore(storeName).add(data);
29 request.onsuccess = function (event) {
30 resolve(event);
31 }
32 request.onerror = function (event) {
33 throw new Error(event.target.error);
34 reject(event);
35 }
36 });
37 }
38
39 // 删除数据
40 function deleteData(db, storeName, id) {
41 let request = db.transaction([storeName], 'readwrite').objectStore(storeName).delete(id);
42 return new Promise(function(resolve, reject) {
43 request.onsuccess = function (event) {
44 resolve(event);
45 }
46 request.onerror = function (event) {
47 resolve(event);
48 }
49 });
50 }
51
52 // 更新数据
53 function updateData(db, storeName, data) {
54 let request = db.transaction([storeName], 'readwrite').objectStore(storeName).put(data);
55 return new Promise(function(resolve, reject) {
56 request.onsuccess = function (event) {
57 resolve(event);
58 }
59 request.onerror = function (event) {
60 resolve(event);
61 }
62 });
63 }
64
65 // 通过主键读取数据
66 function getDataByKey(db, storeName, key) {
67 return new Promise(function(resolve, reject) {
68 let transaction = db.transaction([storeName]);
69 let objectStore = transaction.objectStore(storeName);
70 let request = objectStore.get(key);
71 request.onsuccess = function (event) {
72 resolve(request.result);
73 }
74 request.onerror = function (event) {
75 reject(event);
76 }
77 });
78 }
79
80 // 通过索引读取数据
81 function getDataByIndex(db, storeName, indexName, indexValue) {
82 let store = db.transaction(storeName, 'readwrite').objectStore(storeName);
83 let request = store.index(indexName).get(indexValue);
84 return new Promise(function(resolve, reject) {
85 request.onsuccess = function (event) {
86 resolve(event.target.result);
87 }
88 request.onerror = function (event) {
89 reject(event);
90 }
91 });
92 }
93
94 // 通过游标读取数据
95 function listDataAll(db, storeName) {
96 let list = [];
97 let store = db.transaction(storeName, 'readwrite').objectStore(storeName);
98 let request = store.openCursor();
99 return new Promise(function(resolve, reject) {
100 request.onsuccess = function (event) {
101 let cursor = event.target.result;
102 if (cursor) {
103 // 必须要检查
104 list.push(cursor.value);
105 cursor.continue(); // 遍历了存储对象中的所有内容
106 } else {
107 resolve(list);
108 }
109 }
110 request.onerror = function (event) {
111 reject(event);
112 }
113 });
114 }
115
116 // 通过索引和游标查询记录
117 function listDataByIndex(db, storeName, indexName, indexValue) {
118 let list = [];
119 let store = db.transaction(storeName, 'readwrite').objectStore(storeName);
120 let request = store.index(indexName).openCursor(IDBKeyRange.only(indexValue));
121 return new Promise(function(resolve, reject) {
122 request.onsuccess = function (event) {
123 let cursor = event.target.result;
124 if (cursor) {
125 list.push(cursor.value);
126 cursor.continue();
127 } else {
128 resolve(list);
129 }
130 }
131 request.onerror = function (event) {
132 reject(event);
133 }
134 });
135 }
136
137 // 关闭数据库
138 function closeDB(db) {
139 db.close();
140 console.log('数据库已关闭');
141 }
142
143 // 删除数据库
144 function deleteDBAll(dbName) {
145 let deleteRequest = window.indexedDB.deleteDatabase(dbName);
146 return new Promise(function(resolve, reject) {
147 deleteRequest.onsuccess = function (event) {
148 console.log('删除数据库['+dbName+']成功');
149 }
150 deleteRequest.onerror = function (event) {
151 console.log('删除数据库['+dbName+']失败');
152 }
153 });
154 }
155 var priceTips =
156 [
157 {"id":"3705608840985838048","openPrice":109.9,"closePrice":599,"title":"【LZ】COCO Amoni【缕空网纱】潮流时尚轻奢圆领长袖卫衣 FJ046"},
158 {"id":"3711654424024842572","openPrice":109.9,"closePrice":599,"title":"【LZ】时尚休闲百搭上衣拼接不规则刺绣蝴蝶袖显瘦长袖卫衣ZQ355"},
159 {"id":"3709382942422860093","openPrice":109.9,"closePrice":599,"title":"【LZ】COCO Amoni【缕空网纱】潮流时尚轻奢圆领长袖卫衣 FJ046"},
160 {"id":"3710466032167682295","openPrice":329.9,"closePrice":1599,"title":"【LZ】冬季时尚拼接褶皱收腰立领拉链款显瘦小个子感羽绒服女FJ099"},
161 {"id":"3710840031653527609","openPrice":359.9,"closePrice":1599,"title":"【LZ】潮流拼接立领连帽保暖个性宽松撞色羽绒服YR018"},
162 {"id":"3712643636521992446","openPrice":359.9,"closePrice":1599,"title":"优雅小香风翻领拼接抽绳收腰宽松时尚设计感洋气保暖羽绒服YR031"},
163 {"id":"3712643247735177353","openPrice":359.9,"closePrice":1599,"title":"甜美粉撞色格纹字母刺绣立领保暖设计感长袖羽绒服 YR075"},
164 {"id":"3712641806790426706","openPrice":359.9,"closePrice":1599,"title":"极简风纯色皮面连帽立领短款设计感宽松羽绒服AB253"},
165 {"id":"3712634902764716209","openPrice":359.9,"closePrice":1599,"title":"粉色格纹字母刺绣立领拉链款宽松时尚保暖短款羽绒服YR039"},
166 {"id":"3710837751009116527","openPrice":399.9,"closePrice":1599,"title":"【LZ】甜美纯色拼接连帽保暖时尚设计感宽松短款长袖羽绒服女YR064"},
167 {"id":"3710836417237221862","openPrice":399.9,"closePrice":1599,"title":"【LZ】甜美宽松立领连帽毛领小毛球设计感保暖短款羽绒服YR020"},
168 {"id":"3712642397373595951","openPrice":399.9,"closePrice":1599,"title":"冬季设计师拼接大毛领小个子面包服显瘦时尚百搭羽绒服JD057"},
169 ];
170
171 async function updateSpPrice(){
172 let dbName = 'lz_db',storeName = 'lz_db_sp_price';
173 let db = await openDB(dbName, storeName);
174 for(let i = 0; i < priceTips.length; i++){
175 let data = priceTips[i];
176 let getResult = await getDataByKey(db, storeName, data.id);
177 if(getResult){
178 console.log('--------------- 主键查找的商品信息 ---------------')
179 console.log(getResult);
180 }else{
181 let addResult = await addData(db, storeName, data);
182 console.log('--------------- 添加['+data.id+']结果 ---------------')
183 console.log(addResult);
184 }
185 }
186 let listResult = await listDataAll(db, storeName);
187 console.log('--------------- 所有商品信息 ---------------')
188 console.log(listResult);
189 closeDB(db);
190 }
191 updateSpPrice();
192
193 // // 打开、创建数据库数据库
194 // function openDB(dbName, storeName, version = 1)
195 // // 新增数据
196 // function addData(db, storeName, data)
197 // // 删除数据
198 // function deleteData(db, storeName, id)
199 // // 更新数据
200 // function updateData(db, storeName, data)
201 // // 通过主键读取数据
202 // function getDataByKey(db, storeName, key)
203 // // 通过索引读取数据
204 // function getDataByIndex(db, storeName, indexName, indexValue)
205 // // 通过游标读取数据
206 // function listDataAll(db, storeName)
207 // // 通过索引和游标查询记录
208 // function listDataByIndex(db, storeName, indexName, indexValue)