w-orm-lowdb 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -49
- package/dist/w-orm-lowdb.umd.js +2 -2
- package/dist/w-orm-lowdb.umd.js.map +1 -1
- package/docs/WOrmLowdb.html +42 -42
- package/docs/WOrmLowdb.mjs.html +77 -14
- package/docs/index.html +2 -2
- package/g-basic.mjs +17 -29
- package/package.json +5 -5
- package/script.txt +4 -4
- package/src/WOrmLowdb.mjs +75 -12
- package/test/basic.test.mjs +18 -43
- package/toolg/gDistRollup.mjs +2 -0
- package/db.json +0 -14
- package/g.mjs +0 -24
package/docs/WOrmLowdb.mjs.html
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<nav >
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmLowdb.html">WOrmLowdb</a><ul class='methods'><li data-type='method'><a href="WOrmLowdb.html#.
|
|
32
|
+
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmLowdb.html">WOrmLowdb</a><ul class='methods'><li data-type='method'><a href="WOrmLowdb.html#.delAllCore">delAllCore</a></li><li data-type='method'><a href="WOrmLowdb.html#.delCore">delCore</a></li><li data-type='method'><a href="WOrmLowdb.html#.insertCore">insertCore</a></li><li data-type='method'><a href="WOrmLowdb.html#.saveCore">saveCore</a></li><li data-type='method'><a href="WOrmLowdb.html#.selectCore">selectCore</a></li></ul></li></ul>
|
|
33
33
|
|
|
34
34
|
</nav>
|
|
35
35
|
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
<pre class="prettyprint source linenums"><code>import events from 'events'
|
|
49
49
|
import { Low } from 'lowdb'
|
|
50
50
|
import { JSONFile } from 'lowdb/node'
|
|
51
|
-
import { Query } from 'mingo'
|
|
51
|
+
import { Query } from 'mingo' //須指定安裝6.5.6, 若6.6.0無法匯入Query
|
|
52
52
|
import get from 'lodash-es/get.js'
|
|
53
53
|
import each from 'lodash-es/each.js'
|
|
54
54
|
import map from 'lodash-es/map.js'
|
|
@@ -64,6 +64,12 @@ import iseobj from 'wsemi/src/iseobj.mjs'
|
|
|
64
64
|
import isearr from 'wsemi/src/isearr.mjs'
|
|
65
65
|
import haskey from 'wsemi/src/haskey.mjs'
|
|
66
66
|
import arrPullAt from 'wsemi/src/arrPullAt.mjs'
|
|
67
|
+
import waitFun from 'wsemi/src/waitFun.mjs'
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
//全域鎖, 一次僅能執行一種操作函數
|
|
71
|
+
//select理論上是不用鎖, 但因為操作上db.jon.tmp更名回db.json時似乎非rename而是串流寫入, 導致有機會撈到不完整json數據進而出錯, 故還是得要上鎖以策安全
|
|
72
|
+
let glock = false
|
|
67
73
|
|
|
68
74
|
|
|
69
75
|
/**
|
|
@@ -120,7 +126,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
120
126
|
* @param {Object} [find={}] 輸入查詢條件物件
|
|
121
127
|
* @returns {Promise} 回傳Promise,resolve回傳數據,reject回傳錯誤訊息
|
|
122
128
|
*/
|
|
123
|
-
async function
|
|
129
|
+
async function selectCore(find = {}) {
|
|
124
130
|
let isErr = false
|
|
125
131
|
|
|
126
132
|
//res
|
|
@@ -162,6 +168,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
162
168
|
}
|
|
163
169
|
return res
|
|
164
170
|
}
|
|
171
|
+
async function select(find = {}) {
|
|
172
|
+
if (glock) {
|
|
173
|
+
await waitFun(() => {
|
|
174
|
+
return !glock
|
|
175
|
+
})
|
|
176
|
+
}
|
|
177
|
+
glock = true
|
|
178
|
+
return await selectCore(find)
|
|
179
|
+
.finally(() => {
|
|
180
|
+
glock = false
|
|
181
|
+
})
|
|
182
|
+
}
|
|
165
183
|
|
|
166
184
|
/**
|
|
167
185
|
* 插入數據,插入同樣數據會自動產生不同_id,故insert前需自行判斷有無重複
|
|
@@ -170,7 +188,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
170
188
|
* @param {Object|Array} data 輸入數據物件或陣列
|
|
171
189
|
* @returns {Promise} 回傳Promise,resolve回傳插入結果,reject回傳錯誤訊息
|
|
172
190
|
*/
|
|
173
|
-
async function
|
|
191
|
+
async function insertCore(data) {
|
|
174
192
|
let isErr = false
|
|
175
193
|
|
|
176
194
|
//check
|
|
@@ -260,6 +278,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
260
278
|
}
|
|
261
279
|
return res
|
|
262
280
|
}
|
|
281
|
+
async function insert(data) {
|
|
282
|
+
if (glock) {
|
|
283
|
+
await waitFun(() => {
|
|
284
|
+
return !glock
|
|
285
|
+
})
|
|
286
|
+
}
|
|
287
|
+
glock = true
|
|
288
|
+
return await insertCore(data)
|
|
289
|
+
.finally(() => {
|
|
290
|
+
glock = false
|
|
291
|
+
})
|
|
292
|
+
}
|
|
263
293
|
|
|
264
294
|
/**
|
|
265
295
|
* 儲存數據
|
|
@@ -270,7 +300,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
270
300
|
* @param {boolean} [option.autoInsert=true] 輸入是否於儲存時發現原本無數據,則自動改以插入處理,預設為true
|
|
271
301
|
* @returns {Promise} 回傳Promise,resolve回傳儲存結果,reject回傳錯誤訊息
|
|
272
302
|
*/
|
|
273
|
-
async function
|
|
303
|
+
async function saveCore(data, option = {}) {
|
|
274
304
|
let isErr = false
|
|
275
305
|
|
|
276
306
|
//check
|
|
@@ -322,11 +352,8 @@ function WOrmLowdb(opt = {}) {
|
|
|
322
352
|
//rest
|
|
323
353
|
let rest = null
|
|
324
354
|
|
|
325
|
-
|
|
326
|
-
let
|
|
327
|
-
|
|
328
|
-
//查找資料表內v.id為_v
|
|
329
|
-
let r = get(kp, id, null)
|
|
355
|
+
//查找資料表內v.id
|
|
356
|
+
let r = get(kp, v.id, null)
|
|
330
357
|
|
|
331
358
|
//check
|
|
332
359
|
if (iseobj(r)) {
|
|
@@ -363,7 +390,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
363
390
|
|
|
364
391
|
//autoInsert
|
|
365
392
|
if (autoInsert && rest.n === 0) {
|
|
366
|
-
rest = await
|
|
393
|
+
rest = await insertCore(v)
|
|
367
394
|
}
|
|
368
395
|
|
|
369
396
|
return rest
|
|
@@ -388,6 +415,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
388
415
|
}
|
|
389
416
|
return res
|
|
390
417
|
}
|
|
418
|
+
async function save(data, option = {}) {
|
|
419
|
+
if (glock) {
|
|
420
|
+
await waitFun(() => {
|
|
421
|
+
return !glock
|
|
422
|
+
})
|
|
423
|
+
}
|
|
424
|
+
glock = true
|
|
425
|
+
return await saveCore(data, option)
|
|
426
|
+
.finally(() => {
|
|
427
|
+
glock = false
|
|
428
|
+
})
|
|
429
|
+
}
|
|
391
430
|
|
|
392
431
|
/**
|
|
393
432
|
* 刪除數據
|
|
@@ -396,7 +435,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
396
435
|
* @param {Object|Array} data 輸入數據物件或陣列
|
|
397
436
|
* @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
|
|
398
437
|
*/
|
|
399
|
-
async function
|
|
438
|
+
async function delCore(data) {
|
|
400
439
|
let isErr = false
|
|
401
440
|
|
|
402
441
|
//check
|
|
@@ -516,6 +555,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
516
555
|
}
|
|
517
556
|
return res
|
|
518
557
|
}
|
|
558
|
+
async function del(data) {
|
|
559
|
+
if (glock) {
|
|
560
|
+
await waitFun(() => {
|
|
561
|
+
return !glock
|
|
562
|
+
})
|
|
563
|
+
}
|
|
564
|
+
glock = true
|
|
565
|
+
return await delCore(data)
|
|
566
|
+
.finally(() => {
|
|
567
|
+
glock = false
|
|
568
|
+
})
|
|
569
|
+
}
|
|
519
570
|
|
|
520
571
|
/**
|
|
521
572
|
* 刪除全部數據,需與del分開,避免未傳數據導致直接刪除全表
|
|
@@ -524,7 +575,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
524
575
|
* @param {Object} [find={}] 輸入刪除條件物件
|
|
525
576
|
* @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
|
|
526
577
|
*/
|
|
527
|
-
async function
|
|
578
|
+
async function delAllCore(find = {}) {
|
|
528
579
|
let isErr = false
|
|
529
580
|
|
|
530
581
|
//res
|
|
@@ -629,6 +680,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
629
680
|
}
|
|
630
681
|
return res
|
|
631
682
|
}
|
|
683
|
+
async function delAll(find = {}) {
|
|
684
|
+
if (glock) {
|
|
685
|
+
await waitFun(() => {
|
|
686
|
+
return !glock
|
|
687
|
+
})
|
|
688
|
+
}
|
|
689
|
+
glock = true
|
|
690
|
+
return await delAllCore(find)
|
|
691
|
+
.finally(() => {
|
|
692
|
+
glock = false
|
|
693
|
+
})
|
|
694
|
+
}
|
|
632
695
|
|
|
633
696
|
//bind
|
|
634
697
|
ee.select = select
|
|
@@ -656,7 +719,7 @@ export default WOrmLowdb
|
|
|
656
719
|
<br class="clear">
|
|
657
720
|
|
|
658
721
|
<footer>
|
|
659
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on
|
|
722
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on Fri May 09 2025 12:29:37 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
660
723
|
</footer>
|
|
661
724
|
|
|
662
725
|
<script>prettyPrint();</script>
|
package/docs/index.html
CHANGED
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<nav >
|
|
30
30
|
|
|
31
31
|
|
|
32
|
-
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmLowdb.html">WOrmLowdb</a><ul class='methods'><li data-type='method'><a href="WOrmLowdb.html#.
|
|
32
|
+
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmLowdb.html">WOrmLowdb</a><ul class='methods'><li data-type='method'><a href="WOrmLowdb.html#.delAllCore">delAllCore</a></li><li data-type='method'><a href="WOrmLowdb.html#.delCore">delCore</a></li><li data-type='method'><a href="WOrmLowdb.html#.insertCore">insertCore</a></li><li data-type='method'><a href="WOrmLowdb.html#.saveCore">saveCore</a></li><li data-type='method'><a href="WOrmLowdb.html#.selectCore">selectCore</a></li></ul></li></ul>
|
|
33
33
|
|
|
34
34
|
</nav>
|
|
35
35
|
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
<br class="clear">
|
|
72
72
|
|
|
73
73
|
<footer>
|
|
74
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.4</a> on Fri May 09 2025 12:29:37 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
75
75
|
</footer>
|
|
76
76
|
|
|
77
77
|
<script>prettyPrint();</script>
|
package/g-basic.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
//import
|
|
1
|
+
import WOrm from './src/WOrmLowdb.mjs'
|
|
2
|
+
//import WOrm from './dist/w-orm-lowdb.umd.js'
|
|
3
3
|
// import w from 'wsemi'
|
|
4
4
|
|
|
5
5
|
|
|
@@ -46,19 +46,16 @@ let rsm = [
|
|
|
46
46
|
|
|
47
47
|
async function test() {
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
let w = wo(opt)
|
|
52
|
-
|
|
49
|
+
//wo
|
|
50
|
+
let wo = WOrm(opt)
|
|
53
51
|
|
|
54
52
|
//on
|
|
55
|
-
|
|
53
|
+
wo.on('change', function(mode, data, res) {
|
|
56
54
|
console.log('change', mode)
|
|
57
55
|
})
|
|
58
56
|
|
|
59
|
-
|
|
60
57
|
//delAll
|
|
61
|
-
await
|
|
58
|
+
await wo.delAll()
|
|
62
59
|
.then(function(msg) {
|
|
63
60
|
console.log('delAll then', msg)
|
|
64
61
|
})
|
|
@@ -66,9 +63,8 @@ async function test() {
|
|
|
66
63
|
console.log('delAll catch', msg)
|
|
67
64
|
})
|
|
68
65
|
|
|
69
|
-
|
|
70
66
|
//insert
|
|
71
|
-
await
|
|
67
|
+
await wo.insert(rs)
|
|
72
68
|
.then(function(msg) {
|
|
73
69
|
console.log('insert then', msg)
|
|
74
70
|
})
|
|
@@ -76,9 +72,8 @@ async function test() {
|
|
|
76
72
|
console.log('insert catch', msg)
|
|
77
73
|
})
|
|
78
74
|
|
|
79
|
-
|
|
80
75
|
//save
|
|
81
|
-
await
|
|
76
|
+
await wo.save(rsm, { autoInsert: false })
|
|
82
77
|
.then(function(msg) {
|
|
83
78
|
console.log('save then', msg)
|
|
84
79
|
})
|
|
@@ -86,42 +81,35 @@ async function test() {
|
|
|
86
81
|
console.log('save catch', msg)
|
|
87
82
|
})
|
|
88
83
|
|
|
89
|
-
|
|
90
84
|
//select all
|
|
91
|
-
let ss = await
|
|
85
|
+
let ss = await wo.select()
|
|
92
86
|
console.log('select all', ss)
|
|
93
87
|
|
|
94
|
-
|
|
95
88
|
//select
|
|
96
|
-
let so = await
|
|
89
|
+
let so = await wo.select({ id: 'id-rosemary' })
|
|
97
90
|
console.log('select', so)
|
|
98
91
|
|
|
99
|
-
|
|
100
92
|
//select by $and, $gt, $lt
|
|
101
|
-
let spa = await
|
|
93
|
+
let spa = await wo.select({ '$and': [{ value: { '$gt': 123 } }, { value: { '$lt': 200 } }] })
|
|
102
94
|
console.log('select by $and, $gt, $lt', spa)
|
|
103
95
|
|
|
104
|
-
|
|
105
96
|
//select by $or, $gte, $lte
|
|
106
|
-
let spb = await
|
|
97
|
+
let spb = await wo.select({ '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 200 } }] })
|
|
107
98
|
console.log('select by $or, $gte, $lte', spb)
|
|
108
99
|
|
|
109
|
-
|
|
110
100
|
//select by $or, $and, $ne, $in, $nin
|
|
111
|
-
let spc = await
|
|
101
|
+
let spc = await wo.select({ '$or': [{ '$and': [{ value: { '$ne': 123 } }, { value: { '$in': [123, 321, 123.456, 456] } }, { value: { '$nin': [456, 654] } }] }, { '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 400 } }] }] })
|
|
112
102
|
console.log('select by $or, $and, $ne, $in, $nin', spc)
|
|
113
103
|
|
|
114
|
-
|
|
115
104
|
// //select by regex //mingo不支援regex
|
|
116
|
-
// let sr = await
|
|
105
|
+
// let sr = await wo.select({ name: { $regex: 'PeT', $options: '$i' } })
|
|
117
106
|
// console.log('selectReg', sr)
|
|
118
107
|
|
|
119
|
-
|
|
120
108
|
//del
|
|
121
109
|
let d = ss.filter(function(v) {
|
|
122
110
|
return v.name === 'kettle'
|
|
123
111
|
})
|
|
124
|
-
await
|
|
112
|
+
await wo.del(d)
|
|
125
113
|
.then(function(msg) {
|
|
126
114
|
console.log('del then', msg)
|
|
127
115
|
})
|
|
@@ -129,7 +117,6 @@ async function test() {
|
|
|
129
117
|
console.log('del catch', msg)
|
|
130
118
|
})
|
|
131
119
|
|
|
132
|
-
|
|
133
120
|
}
|
|
134
121
|
test()
|
|
135
122
|
// change delAll
|
|
@@ -175,4 +162,5 @@ test()
|
|
|
175
162
|
// change del
|
|
176
163
|
// del then [ { n: 1, nDeleted: 1, ok: 1 } ]
|
|
177
164
|
|
|
178
|
-
|
|
165
|
+
|
|
166
|
+
//node g-basic.mjs
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-orm-lowdb",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"main": "dist/w-orm-lowdb.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"lodash-es": "^4.17.21",
|
|
7
7
|
"lowdb": "^7.0.1",
|
|
8
|
-
"mingo": "^6.
|
|
9
|
-
"wsemi": "^1.7.
|
|
8
|
+
"mingo": "^6.6.1",
|
|
9
|
+
"wsemi": "^1.7.90"
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"w-package-tools": "^1.0.
|
|
12
|
+
"w-package-tools": "^1.0.90"
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
|
-
"test": "mocha --parallel --timeout 60000
|
|
15
|
+
"test": "mocha --parallel --timeout 60000",
|
|
16
16
|
"deploy": "gh-pages -d docs"
|
|
17
17
|
},
|
|
18
18
|
"repository": {
|
package/script.txt
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
#node
|
|
2
|
-
node
|
|
1
|
+
#node toolg/addVersion.mjs
|
|
2
|
+
node toolg/modifyReadme.mjs
|
|
3
3
|
|
|
4
|
-
node
|
|
4
|
+
node toolg/cleanFolder.mjs
|
|
5
5
|
./node_modules/.bin/jsdoc -c .jsdoc
|
|
6
6
|
|
|
7
|
-
node
|
|
7
|
+
node toolg/gDistRollup.mjs
|
|
8
8
|
|
|
9
9
|
git add . -A
|
|
10
10
|
git commit -m 'modify: '
|
package/src/WOrmLowdb.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import events from 'events'
|
|
2
2
|
import { Low } from 'lowdb'
|
|
3
3
|
import { JSONFile } from 'lowdb/node'
|
|
4
|
-
import { Query } from 'mingo'
|
|
4
|
+
import { Query } from 'mingo' //須指定安裝6.5.6, 若6.6.0無法匯入Query
|
|
5
5
|
import get from 'lodash-es/get.js'
|
|
6
6
|
import each from 'lodash-es/each.js'
|
|
7
7
|
import map from 'lodash-es/map.js'
|
|
@@ -17,6 +17,12 @@ import iseobj from 'wsemi/src/iseobj.mjs'
|
|
|
17
17
|
import isearr from 'wsemi/src/isearr.mjs'
|
|
18
18
|
import haskey from 'wsemi/src/haskey.mjs'
|
|
19
19
|
import arrPullAt from 'wsemi/src/arrPullAt.mjs'
|
|
20
|
+
import waitFun from 'wsemi/src/waitFun.mjs'
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
//全域鎖, 一次僅能執行一種操作函數
|
|
24
|
+
//select理論上是不用鎖, 但因為操作上db.jon.tmp更名回db.json時似乎非rename而是串流寫入, 導致有機會撈到不完整json數據進而出錯, 故還是得要上鎖以策安全
|
|
25
|
+
let glock = false
|
|
20
26
|
|
|
21
27
|
|
|
22
28
|
/**
|
|
@@ -73,7 +79,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
73
79
|
* @param {Object} [find={}] 輸入查詢條件物件
|
|
74
80
|
* @returns {Promise} 回傳Promise,resolve回傳數據,reject回傳錯誤訊息
|
|
75
81
|
*/
|
|
76
|
-
async function
|
|
82
|
+
async function selectCore(find = {}) {
|
|
77
83
|
let isErr = false
|
|
78
84
|
|
|
79
85
|
//res
|
|
@@ -115,6 +121,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
115
121
|
}
|
|
116
122
|
return res
|
|
117
123
|
}
|
|
124
|
+
async function select(find = {}) {
|
|
125
|
+
if (glock) {
|
|
126
|
+
await waitFun(() => {
|
|
127
|
+
return !glock
|
|
128
|
+
})
|
|
129
|
+
}
|
|
130
|
+
glock = true
|
|
131
|
+
return await selectCore(find)
|
|
132
|
+
.finally(() => {
|
|
133
|
+
glock = false
|
|
134
|
+
})
|
|
135
|
+
}
|
|
118
136
|
|
|
119
137
|
/**
|
|
120
138
|
* 插入數據,插入同樣數據會自動產生不同_id,故insert前需自行判斷有無重複
|
|
@@ -123,7 +141,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
123
141
|
* @param {Object|Array} data 輸入數據物件或陣列
|
|
124
142
|
* @returns {Promise} 回傳Promise,resolve回傳插入結果,reject回傳錯誤訊息
|
|
125
143
|
*/
|
|
126
|
-
async function
|
|
144
|
+
async function insertCore(data) {
|
|
127
145
|
let isErr = false
|
|
128
146
|
|
|
129
147
|
//check
|
|
@@ -213,6 +231,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
213
231
|
}
|
|
214
232
|
return res
|
|
215
233
|
}
|
|
234
|
+
async function insert(data) {
|
|
235
|
+
if (glock) {
|
|
236
|
+
await waitFun(() => {
|
|
237
|
+
return !glock
|
|
238
|
+
})
|
|
239
|
+
}
|
|
240
|
+
glock = true
|
|
241
|
+
return await insertCore(data)
|
|
242
|
+
.finally(() => {
|
|
243
|
+
glock = false
|
|
244
|
+
})
|
|
245
|
+
}
|
|
216
246
|
|
|
217
247
|
/**
|
|
218
248
|
* 儲存數據
|
|
@@ -223,7 +253,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
223
253
|
* @param {boolean} [option.autoInsert=true] 輸入是否於儲存時發現原本無數據,則自動改以插入處理,預設為true
|
|
224
254
|
* @returns {Promise} 回傳Promise,resolve回傳儲存結果,reject回傳錯誤訊息
|
|
225
255
|
*/
|
|
226
|
-
async function
|
|
256
|
+
async function saveCore(data, option = {}) {
|
|
227
257
|
let isErr = false
|
|
228
258
|
|
|
229
259
|
//check
|
|
@@ -275,11 +305,8 @@ function WOrmLowdb(opt = {}) {
|
|
|
275
305
|
//rest
|
|
276
306
|
let rest = null
|
|
277
307
|
|
|
278
|
-
|
|
279
|
-
let
|
|
280
|
-
|
|
281
|
-
//查找資料表內v.id為_v
|
|
282
|
-
let r = get(kp, id, null)
|
|
308
|
+
//查找資料表內v.id
|
|
309
|
+
let r = get(kp, v.id, null)
|
|
283
310
|
|
|
284
311
|
//check
|
|
285
312
|
if (iseobj(r)) {
|
|
@@ -316,7 +343,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
316
343
|
|
|
317
344
|
//autoInsert
|
|
318
345
|
if (autoInsert && rest.n === 0) {
|
|
319
|
-
rest = await
|
|
346
|
+
rest = await insertCore(v)
|
|
320
347
|
}
|
|
321
348
|
|
|
322
349
|
return rest
|
|
@@ -341,6 +368,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
341
368
|
}
|
|
342
369
|
return res
|
|
343
370
|
}
|
|
371
|
+
async function save(data, option = {}) {
|
|
372
|
+
if (glock) {
|
|
373
|
+
await waitFun(() => {
|
|
374
|
+
return !glock
|
|
375
|
+
})
|
|
376
|
+
}
|
|
377
|
+
glock = true
|
|
378
|
+
return await saveCore(data, option)
|
|
379
|
+
.finally(() => {
|
|
380
|
+
glock = false
|
|
381
|
+
})
|
|
382
|
+
}
|
|
344
383
|
|
|
345
384
|
/**
|
|
346
385
|
* 刪除數據
|
|
@@ -349,7 +388,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
349
388
|
* @param {Object|Array} data 輸入數據物件或陣列
|
|
350
389
|
* @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
|
|
351
390
|
*/
|
|
352
|
-
async function
|
|
391
|
+
async function delCore(data) {
|
|
353
392
|
let isErr = false
|
|
354
393
|
|
|
355
394
|
//check
|
|
@@ -469,6 +508,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
469
508
|
}
|
|
470
509
|
return res
|
|
471
510
|
}
|
|
511
|
+
async function del(data) {
|
|
512
|
+
if (glock) {
|
|
513
|
+
await waitFun(() => {
|
|
514
|
+
return !glock
|
|
515
|
+
})
|
|
516
|
+
}
|
|
517
|
+
glock = true
|
|
518
|
+
return await delCore(data)
|
|
519
|
+
.finally(() => {
|
|
520
|
+
glock = false
|
|
521
|
+
})
|
|
522
|
+
}
|
|
472
523
|
|
|
473
524
|
/**
|
|
474
525
|
* 刪除全部數據,需與del分開,避免未傳數據導致直接刪除全表
|
|
@@ -477,7 +528,7 @@ function WOrmLowdb(opt = {}) {
|
|
|
477
528
|
* @param {Object} [find={}] 輸入刪除條件物件
|
|
478
529
|
* @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
|
|
479
530
|
*/
|
|
480
|
-
async function
|
|
531
|
+
async function delAllCore(find = {}) {
|
|
481
532
|
let isErr = false
|
|
482
533
|
|
|
483
534
|
//res
|
|
@@ -582,6 +633,18 @@ function WOrmLowdb(opt = {}) {
|
|
|
582
633
|
}
|
|
583
634
|
return res
|
|
584
635
|
}
|
|
636
|
+
async function delAll(find = {}) {
|
|
637
|
+
if (glock) {
|
|
638
|
+
await waitFun(() => {
|
|
639
|
+
return !glock
|
|
640
|
+
})
|
|
641
|
+
}
|
|
642
|
+
glock = true
|
|
643
|
+
return await delAllCore(find)
|
|
644
|
+
.finally(() => {
|
|
645
|
+
glock = false
|
|
646
|
+
})
|
|
647
|
+
}
|
|
585
648
|
|
|
586
649
|
//bind
|
|
587
650
|
ee.select = select
|