w-orm-lowdb 1.0.6 → 1.0.8
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 +24 -0
- package/babel.config.js +4 -3
- package/dist/w-orm-lowdb.umd.js +2 -2
- package/dist/w-orm-lowdb.umd.js.map +1 -1
- package/docs/WOrmLowdb.html +6 -6
- package/docs/WOrmLowdb.mjs.html +118 -26
- package/docs/index.html +1 -1
- package/g-basic.mjs +19 -0
- package/package.json +5 -5
- package/script.txt +0 -1
- package/src/WOrmLowdb.mjs +117 -25
- package/test/basic.test.mjs +33 -4
package/docs/WOrmLowdb.mjs.html
CHANGED
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
import events from 'events'
|
|
50
50
|
import { Low } from 'lowdb'
|
|
51
51
|
import { JSONFile } from 'lowdb/node'
|
|
52
|
-
import { Query } from 'mingo'
|
|
52
|
+
import { Query } from 'mingo'
|
|
53
53
|
import get from 'lodash-es/get.js'
|
|
54
54
|
import each from 'lodash-es/each.js'
|
|
55
55
|
import map from 'lodash-es/map.js'
|
|
@@ -84,6 +84,9 @@ let kpGlock = {}
|
|
|
84
84
|
*/
|
|
85
85
|
function WOrmLowdb(opt = {}) {
|
|
86
86
|
|
|
87
|
+
//_cache
|
|
88
|
+
let _cache = null
|
|
89
|
+
|
|
87
90
|
//url
|
|
88
91
|
let url = get(opt, 'url')
|
|
89
92
|
if (!isestr(url)) {
|
|
@@ -128,6 +131,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
128
131
|
kpGlock[gkey] = false
|
|
129
132
|
}
|
|
130
133
|
|
|
134
|
+
//getData
|
|
135
|
+
let getData = async() => {
|
|
136
|
+
|
|
137
|
+
//check
|
|
138
|
+
if (isarr(_cache)) {
|
|
139
|
+
return cloneDeep(_cache) //與外部使用數據脫勾
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
//read
|
|
143
|
+
await lowdb.read()
|
|
144
|
+
|
|
145
|
+
//default, 使用lowdb.read()初始化後須馬上檢測, 若無key則須先創建空陣列
|
|
146
|
+
if (!haskey(lowdb.data, key)) {
|
|
147
|
+
lowdb.data[key] = []
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
//update
|
|
151
|
+
_cache = lowdb.data[key]
|
|
152
|
+
|
|
153
|
+
return cloneDeep(_cache) //與外部使用數據脫勾
|
|
154
|
+
}
|
|
155
|
+
|
|
131
156
|
/**
|
|
132
157
|
* 查詢數據
|
|
133
158
|
*
|
|
@@ -142,13 +167,8 @@ function WOrmLowdb(opt = {}) {
|
|
|
142
167
|
let res = null
|
|
143
168
|
try {
|
|
144
169
|
|
|
145
|
-
//
|
|
146
|
-
await
|
|
147
|
-
|
|
148
|
-
//default, 使用lowdb.read()初始化後須馬上檢測, 若無key則須先創建空陣列
|
|
149
|
-
if (!haskey(lowdb.data, key)) {
|
|
150
|
-
lowdb.data[key] = []
|
|
151
|
-
}
|
|
170
|
+
//ltdt
|
|
171
|
+
let ltdt = await getData()
|
|
152
172
|
|
|
153
173
|
//filter
|
|
154
174
|
if (iseobj(find)) {
|
|
@@ -158,12 +178,12 @@ function WOrmLowdb(opt = {}) {
|
|
|
158
178
|
// console.log('q', q)
|
|
159
179
|
|
|
160
180
|
//find
|
|
161
|
-
res = q.find(
|
|
181
|
+
res = q.find(ltdt).all()
|
|
162
182
|
// console.log('res', res)
|
|
163
183
|
|
|
164
184
|
}
|
|
165
185
|
else {
|
|
166
|
-
res =
|
|
186
|
+
res = ltdt
|
|
167
187
|
}
|
|
168
188
|
|
|
169
189
|
}
|
|
@@ -277,15 +297,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
277
297
|
ok: 1,
|
|
278
298
|
}
|
|
279
299
|
|
|
280
|
-
//emit
|
|
281
|
-
ee.emit('change', 'insert', data, res)
|
|
282
|
-
|
|
283
300
|
}
|
|
284
301
|
catch (err) {
|
|
285
302
|
isErr = true
|
|
286
303
|
res = err
|
|
287
304
|
}
|
|
288
305
|
|
|
306
|
+
//update, 不能保證插入多少, 一律重設快取
|
|
307
|
+
_cache = null
|
|
308
|
+
|
|
309
|
+
//emit, 於change可能須使用select, 故須放在重設快取之後
|
|
310
|
+
if (!isErr) {
|
|
311
|
+
try {
|
|
312
|
+
|
|
313
|
+
//emit
|
|
314
|
+
ee.emit('change', 'insert', data, res)
|
|
315
|
+
|
|
316
|
+
}
|
|
317
|
+
catch (err) {
|
|
318
|
+
console.log(err)
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
289
322
|
if (isErr) {
|
|
290
323
|
return Promise.reject(res)
|
|
291
324
|
}
|
|
@@ -368,8 +401,11 @@ function WOrmLowdb(opt = {}) {
|
|
|
368
401
|
//查找資料表內v.id
|
|
369
402
|
let r = get(kp, v.id, null)
|
|
370
403
|
|
|
404
|
+
//existed
|
|
405
|
+
let existed = iseobj(r)
|
|
406
|
+
|
|
371
407
|
//check
|
|
372
|
-
if (
|
|
408
|
+
if (existed) {
|
|
373
409
|
//已存在v.id
|
|
374
410
|
if (isEqual(v, r.v)) {
|
|
375
411
|
//內容相同不更新
|
|
@@ -384,6 +420,9 @@ function WOrmLowdb(opt = {}) {
|
|
|
384
420
|
b = true
|
|
385
421
|
}
|
|
386
422
|
}
|
|
423
|
+
else {
|
|
424
|
+
//內容不存在
|
|
425
|
+
}
|
|
387
426
|
|
|
388
427
|
//rest
|
|
389
428
|
if (iseobj(rest)) {
|
|
@@ -400,10 +439,24 @@ function WOrmLowdb(opt = {}) {
|
|
|
400
439
|
ok: 1,
|
|
401
440
|
}
|
|
402
441
|
}
|
|
442
|
+
//rest.n === 0:
|
|
443
|
+
// 內容相同不更新, 不須update
|
|
444
|
+
// 內容不存在, 若autoInsert則須insert
|
|
403
445
|
|
|
404
446
|
//autoInsert
|
|
405
|
-
if (autoInsert && rest.n === 0) {
|
|
406
|
-
|
|
447
|
+
if (autoInsert && rest.n === 0 && !existed) {
|
|
448
|
+
let k = size(lowdb.data[key])
|
|
449
|
+
lowdb.data[key].push(v)
|
|
450
|
+
kp[v.id] = {
|
|
451
|
+
k,
|
|
452
|
+
v: lowdb.data[key][k],
|
|
453
|
+
}
|
|
454
|
+
b = true
|
|
455
|
+
rest = {
|
|
456
|
+
n: 1,
|
|
457
|
+
nInserted: 1,
|
|
458
|
+
ok: 1,
|
|
459
|
+
}
|
|
407
460
|
}
|
|
408
461
|
|
|
409
462
|
return rest
|
|
@@ -414,15 +467,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
414
467
|
await lowdb.write()
|
|
415
468
|
}
|
|
416
469
|
|
|
417
|
-
//emit
|
|
418
|
-
ee.emit('change', 'save', data, res)
|
|
419
|
-
|
|
420
470
|
}
|
|
421
471
|
catch (err) {
|
|
422
472
|
isErr = true
|
|
423
473
|
res = err
|
|
424
474
|
}
|
|
425
475
|
|
|
476
|
+
//update, 不能保證變更多少, 一律重設快取
|
|
477
|
+
_cache = null
|
|
478
|
+
|
|
479
|
+
//emit, 於change可能須使用select, 故須放在重設快取之後
|
|
480
|
+
if (!isErr) {
|
|
481
|
+
try {
|
|
482
|
+
|
|
483
|
+
//emit
|
|
484
|
+
ee.emit('change', 'save', data, res)
|
|
485
|
+
|
|
486
|
+
}
|
|
487
|
+
catch (err) {
|
|
488
|
+
console.log(err)
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
|
|
426
492
|
if (isErr) {
|
|
427
493
|
return Promise.reject(res)
|
|
428
494
|
}
|
|
@@ -554,15 +620,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
554
620
|
await lowdb.write()
|
|
555
621
|
}
|
|
556
622
|
|
|
557
|
-
//emit
|
|
558
|
-
ee.emit('change', 'del', data, res)
|
|
559
|
-
|
|
560
623
|
}
|
|
561
624
|
catch (err) {
|
|
562
625
|
isErr = true
|
|
563
626
|
res = err
|
|
564
627
|
}
|
|
565
628
|
|
|
629
|
+
//update, 不能保證刪除多少, 一律重設快取
|
|
630
|
+
_cache = null
|
|
631
|
+
|
|
632
|
+
//emit, 於change可能須使用select, 故須放在重設快取之後
|
|
633
|
+
if (!isErr) {
|
|
634
|
+
try {
|
|
635
|
+
|
|
636
|
+
//emit
|
|
637
|
+
ee.emit('change', 'del', data, res)
|
|
638
|
+
|
|
639
|
+
}
|
|
640
|
+
catch (err) {
|
|
641
|
+
console.log(err)
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
|
|
566
645
|
if (isErr) {
|
|
567
646
|
return Promise.reject(res)
|
|
568
647
|
}
|
|
@@ -679,15 +758,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
679
758
|
ok: 1,
|
|
680
759
|
}
|
|
681
760
|
|
|
682
|
-
//emit
|
|
683
|
-
ee.emit('change', 'delAll', null, res)
|
|
684
|
-
|
|
685
761
|
}
|
|
686
762
|
catch (err) {
|
|
687
763
|
isErr = true
|
|
688
764
|
res = err
|
|
689
765
|
}
|
|
690
766
|
|
|
767
|
+
//update, 不能保證刪除多少, 一律重設快取
|
|
768
|
+
_cache = null
|
|
769
|
+
|
|
770
|
+
//emit, 於change可能須使用select, 故須放在重設快取之後
|
|
771
|
+
if (!isErr) {
|
|
772
|
+
try {
|
|
773
|
+
|
|
774
|
+
//emit
|
|
775
|
+
ee.emit('change', 'delAll', null, res)
|
|
776
|
+
|
|
777
|
+
}
|
|
778
|
+
catch (err) {
|
|
779
|
+
console.log(err)
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
|
|
691
783
|
if (isErr) {
|
|
692
784
|
return Promise.reject(res)
|
|
693
785
|
}
|
|
@@ -732,7 +824,7 @@ export default WOrmLowdb
|
|
|
732
824
|
<br class="clear">
|
|
733
825
|
|
|
734
826
|
<footer>
|
|
735
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.
|
|
827
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu May 14 2026 19:54:31 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
736
828
|
</footer>
|
|
737
829
|
|
|
738
830
|
<script>prettyPrint();</script>
|
package/docs/index.html
CHANGED
|
@@ -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.
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Thu May 14 2026 19:54:31 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
|
@@ -44,6 +44,14 @@ let rsm = [
|
|
|
44
44
|
},
|
|
45
45
|
]
|
|
46
46
|
|
|
47
|
+
let rsa = [
|
|
48
|
+
{
|
|
49
|
+
id: 'id-rosemary',
|
|
50
|
+
name: 'rosemary',
|
|
51
|
+
value: 654.321,
|
|
52
|
+
},
|
|
53
|
+
]
|
|
54
|
+
|
|
47
55
|
async function test() {
|
|
48
56
|
|
|
49
57
|
//wo
|
|
@@ -105,6 +113,15 @@ async function test() {
|
|
|
105
113
|
// let sr = await wo.select({ name: { $regex: 'PeT', $options: '$i' } })
|
|
106
114
|
// console.log('selectReg', sr)
|
|
107
115
|
|
|
116
|
+
//save
|
|
117
|
+
await wo.save(rsa, { autoInsert: true })
|
|
118
|
+
.then(function(msg) {
|
|
119
|
+
console.log('save then', msg)
|
|
120
|
+
})
|
|
121
|
+
.catch(function(msg) {
|
|
122
|
+
console.log('save catch', msg)
|
|
123
|
+
})
|
|
124
|
+
|
|
108
125
|
//del
|
|
109
126
|
let d = ss.filter(function(v) {
|
|
110
127
|
return v.name === 'kettle'
|
|
@@ -159,6 +176,8 @@ test()
|
|
|
159
176
|
// value: 456
|
|
160
177
|
// }
|
|
161
178
|
// ]
|
|
179
|
+
// change save
|
|
180
|
+
// save then [ { n: 1, nModified: 1, ok: 1 } ]
|
|
162
181
|
// change del
|
|
163
182
|
// del then [ { n: 1, nDeleted: 1, ok: 1 } ]
|
|
164
183
|
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "w-orm-lowdb",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.8",
|
|
4
4
|
"main": "dist/w-orm-lowdb.umd.js",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"lodash-es": "^4.
|
|
6
|
+
"lodash-es": "^4.18.1",
|
|
7
7
|
"lowdb": "^7.0.1",
|
|
8
|
-
"mingo": "^
|
|
9
|
-
"wsemi": "^1.
|
|
8
|
+
"mingo": "^7.2.1",
|
|
9
|
+
"wsemi": "^1.8.52"
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
|
-
"w-package-tools": "^1.
|
|
12
|
+
"w-package-tools": "^1.1.5"
|
|
13
13
|
},
|
|
14
14
|
"scripts": {
|
|
15
15
|
"test": "mocha --parallel --timeout 60000",
|
package/script.txt
CHANGED
package/src/WOrmLowdb.mjs
CHANGED
|
@@ -2,7 +2,7 @@ import path from 'path'
|
|
|
2
2
|
import events from 'events'
|
|
3
3
|
import { Low } from 'lowdb'
|
|
4
4
|
import { JSONFile } from 'lowdb/node'
|
|
5
|
-
import { Query } from 'mingo'
|
|
5
|
+
import { Query } from 'mingo'
|
|
6
6
|
import get from 'lodash-es/get.js'
|
|
7
7
|
import each from 'lodash-es/each.js'
|
|
8
8
|
import map from 'lodash-es/map.js'
|
|
@@ -37,6 +37,9 @@ let kpGlock = {}
|
|
|
37
37
|
*/
|
|
38
38
|
function WOrmLowdb(opt = {}) {
|
|
39
39
|
|
|
40
|
+
//_cache
|
|
41
|
+
let _cache = null
|
|
42
|
+
|
|
40
43
|
//url
|
|
41
44
|
let url = get(opt, 'url')
|
|
42
45
|
if (!isestr(url)) {
|
|
@@ -81,6 +84,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
81
84
|
kpGlock[gkey] = false
|
|
82
85
|
}
|
|
83
86
|
|
|
87
|
+
//getData
|
|
88
|
+
let getData = async() => {
|
|
89
|
+
|
|
90
|
+
//check
|
|
91
|
+
if (isarr(_cache)) {
|
|
92
|
+
return cloneDeep(_cache) //與外部使用數據脫勾
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
//read
|
|
96
|
+
await lowdb.read()
|
|
97
|
+
|
|
98
|
+
//default, 使用lowdb.read()初始化後須馬上檢測, 若無key則須先創建空陣列
|
|
99
|
+
if (!haskey(lowdb.data, key)) {
|
|
100
|
+
lowdb.data[key] = []
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
//update
|
|
104
|
+
_cache = lowdb.data[key]
|
|
105
|
+
|
|
106
|
+
return cloneDeep(_cache) //與外部使用數據脫勾
|
|
107
|
+
}
|
|
108
|
+
|
|
84
109
|
/**
|
|
85
110
|
* 查詢數據
|
|
86
111
|
*
|
|
@@ -95,13 +120,8 @@ function WOrmLowdb(opt = {}) {
|
|
|
95
120
|
let res = null
|
|
96
121
|
try {
|
|
97
122
|
|
|
98
|
-
//
|
|
99
|
-
await
|
|
100
|
-
|
|
101
|
-
//default, 使用lowdb.read()初始化後須馬上檢測, 若無key則須先創建空陣列
|
|
102
|
-
if (!haskey(lowdb.data, key)) {
|
|
103
|
-
lowdb.data[key] = []
|
|
104
|
-
}
|
|
123
|
+
//ltdt
|
|
124
|
+
let ltdt = await getData()
|
|
105
125
|
|
|
106
126
|
//filter
|
|
107
127
|
if (iseobj(find)) {
|
|
@@ -111,12 +131,12 @@ function WOrmLowdb(opt = {}) {
|
|
|
111
131
|
// console.log('q', q)
|
|
112
132
|
|
|
113
133
|
//find
|
|
114
|
-
res = q.find(
|
|
134
|
+
res = q.find(ltdt).all()
|
|
115
135
|
// console.log('res', res)
|
|
116
136
|
|
|
117
137
|
}
|
|
118
138
|
else {
|
|
119
|
-
res =
|
|
139
|
+
res = ltdt
|
|
120
140
|
}
|
|
121
141
|
|
|
122
142
|
}
|
|
@@ -230,15 +250,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
230
250
|
ok: 1,
|
|
231
251
|
}
|
|
232
252
|
|
|
233
|
-
//emit
|
|
234
|
-
ee.emit('change', 'insert', data, res)
|
|
235
|
-
|
|
236
253
|
}
|
|
237
254
|
catch (err) {
|
|
238
255
|
isErr = true
|
|
239
256
|
res = err
|
|
240
257
|
}
|
|
241
258
|
|
|
259
|
+
//update, 不能保證插入多少, 一律重設快取
|
|
260
|
+
_cache = null
|
|
261
|
+
|
|
262
|
+
//emit, 於change可能須使用select, 故須放在重設快取之後
|
|
263
|
+
if (!isErr) {
|
|
264
|
+
try {
|
|
265
|
+
|
|
266
|
+
//emit
|
|
267
|
+
ee.emit('change', 'insert', data, res)
|
|
268
|
+
|
|
269
|
+
}
|
|
270
|
+
catch (err) {
|
|
271
|
+
console.log(err)
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
242
275
|
if (isErr) {
|
|
243
276
|
return Promise.reject(res)
|
|
244
277
|
}
|
|
@@ -321,8 +354,11 @@ function WOrmLowdb(opt = {}) {
|
|
|
321
354
|
//查找資料表內v.id
|
|
322
355
|
let r = get(kp, v.id, null)
|
|
323
356
|
|
|
357
|
+
//existed
|
|
358
|
+
let existed = iseobj(r)
|
|
359
|
+
|
|
324
360
|
//check
|
|
325
|
-
if (
|
|
361
|
+
if (existed) {
|
|
326
362
|
//已存在v.id
|
|
327
363
|
if (isEqual(v, r.v)) {
|
|
328
364
|
//內容相同不更新
|
|
@@ -337,6 +373,9 @@ function WOrmLowdb(opt = {}) {
|
|
|
337
373
|
b = true
|
|
338
374
|
}
|
|
339
375
|
}
|
|
376
|
+
else {
|
|
377
|
+
//內容不存在
|
|
378
|
+
}
|
|
340
379
|
|
|
341
380
|
//rest
|
|
342
381
|
if (iseobj(rest)) {
|
|
@@ -353,10 +392,24 @@ function WOrmLowdb(opt = {}) {
|
|
|
353
392
|
ok: 1,
|
|
354
393
|
}
|
|
355
394
|
}
|
|
395
|
+
//rest.n === 0:
|
|
396
|
+
// 內容相同不更新, 不須update
|
|
397
|
+
// 內容不存在, 若autoInsert則須insert
|
|
356
398
|
|
|
357
399
|
//autoInsert
|
|
358
|
-
if (autoInsert && rest.n === 0) {
|
|
359
|
-
|
|
400
|
+
if (autoInsert && rest.n === 0 && !existed) {
|
|
401
|
+
let k = size(lowdb.data[key])
|
|
402
|
+
lowdb.data[key].push(v)
|
|
403
|
+
kp[v.id] = {
|
|
404
|
+
k,
|
|
405
|
+
v: lowdb.data[key][k],
|
|
406
|
+
}
|
|
407
|
+
b = true
|
|
408
|
+
rest = {
|
|
409
|
+
n: 1,
|
|
410
|
+
nInserted: 1,
|
|
411
|
+
ok: 1,
|
|
412
|
+
}
|
|
360
413
|
}
|
|
361
414
|
|
|
362
415
|
return rest
|
|
@@ -367,15 +420,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
367
420
|
await lowdb.write()
|
|
368
421
|
}
|
|
369
422
|
|
|
370
|
-
//emit
|
|
371
|
-
ee.emit('change', 'save', data, res)
|
|
372
|
-
|
|
373
423
|
}
|
|
374
424
|
catch (err) {
|
|
375
425
|
isErr = true
|
|
376
426
|
res = err
|
|
377
427
|
}
|
|
378
428
|
|
|
429
|
+
//update, 不能保證變更多少, 一律重設快取
|
|
430
|
+
_cache = null
|
|
431
|
+
|
|
432
|
+
//emit, 於change可能須使用select, 故須放在重設快取之後
|
|
433
|
+
if (!isErr) {
|
|
434
|
+
try {
|
|
435
|
+
|
|
436
|
+
//emit
|
|
437
|
+
ee.emit('change', 'save', data, res)
|
|
438
|
+
|
|
439
|
+
}
|
|
440
|
+
catch (err) {
|
|
441
|
+
console.log(err)
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
379
445
|
if (isErr) {
|
|
380
446
|
return Promise.reject(res)
|
|
381
447
|
}
|
|
@@ -507,15 +573,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
507
573
|
await lowdb.write()
|
|
508
574
|
}
|
|
509
575
|
|
|
510
|
-
//emit
|
|
511
|
-
ee.emit('change', 'del', data, res)
|
|
512
|
-
|
|
513
576
|
}
|
|
514
577
|
catch (err) {
|
|
515
578
|
isErr = true
|
|
516
579
|
res = err
|
|
517
580
|
}
|
|
518
581
|
|
|
582
|
+
//update, 不能保證刪除多少, 一律重設快取
|
|
583
|
+
_cache = null
|
|
584
|
+
|
|
585
|
+
//emit, 於change可能須使用select, 故須放在重設快取之後
|
|
586
|
+
if (!isErr) {
|
|
587
|
+
try {
|
|
588
|
+
|
|
589
|
+
//emit
|
|
590
|
+
ee.emit('change', 'del', data, res)
|
|
591
|
+
|
|
592
|
+
}
|
|
593
|
+
catch (err) {
|
|
594
|
+
console.log(err)
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
|
|
519
598
|
if (isErr) {
|
|
520
599
|
return Promise.reject(res)
|
|
521
600
|
}
|
|
@@ -632,15 +711,28 @@ function WOrmLowdb(opt = {}) {
|
|
|
632
711
|
ok: 1,
|
|
633
712
|
}
|
|
634
713
|
|
|
635
|
-
//emit
|
|
636
|
-
ee.emit('change', 'delAll', null, res)
|
|
637
|
-
|
|
638
714
|
}
|
|
639
715
|
catch (err) {
|
|
640
716
|
isErr = true
|
|
641
717
|
res = err
|
|
642
718
|
}
|
|
643
719
|
|
|
720
|
+
//update, 不能保證刪除多少, 一律重設快取
|
|
721
|
+
_cache = null
|
|
722
|
+
|
|
723
|
+
//emit, 於change可能須使用select, 故須放在重設快取之後
|
|
724
|
+
if (!isErr) {
|
|
725
|
+
try {
|
|
726
|
+
|
|
727
|
+
//emit
|
|
728
|
+
ee.emit('change', 'delAll', null, res)
|
|
729
|
+
|
|
730
|
+
}
|
|
731
|
+
catch (err) {
|
|
732
|
+
console.log(err)
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
|
|
644
736
|
if (isErr) {
|
|
645
737
|
return Promise.reject(res)
|
|
646
738
|
}
|
package/test/basic.test.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import assert from 'assert'
|
|
2
|
+
import fs from 'node:fs/promises'
|
|
2
3
|
import WOrm from '../src/WOrmLowdb.mjs'
|
|
3
4
|
import w from 'wsemi'
|
|
4
5
|
|
|
@@ -57,6 +58,14 @@ if (isWindows()) {
|
|
|
57
58
|
},
|
|
58
59
|
]
|
|
59
60
|
|
|
61
|
+
let rsa = [
|
|
62
|
+
{
|
|
63
|
+
id: 'id-rosemary',
|
|
64
|
+
name: 'rosemary',
|
|
65
|
+
value: 654.321,
|
|
66
|
+
},
|
|
67
|
+
]
|
|
68
|
+
|
|
60
69
|
//wo
|
|
61
70
|
let wo = WOrm(opt)
|
|
62
71
|
|
|
@@ -285,9 +294,24 @@ if (isWindows()) {
|
|
|
285
294
|
// })
|
|
286
295
|
// vget[9] = rt
|
|
287
296
|
|
|
297
|
+
//save
|
|
298
|
+
rt = null
|
|
299
|
+
vans[10] = [{ n: 1, nModified: 1, ok: 1 }]
|
|
300
|
+
await wo.save(rsa, { autoInsert: true })
|
|
301
|
+
.then(function(msg) {
|
|
302
|
+
// console.log('save then', msg)
|
|
303
|
+
// save then [ { n: 1, nModified: 1, ok: 1 } ]
|
|
304
|
+
rt = msg
|
|
305
|
+
})
|
|
306
|
+
.catch(function(msg) {
|
|
307
|
+
// console.log('save catch', msg)
|
|
308
|
+
rt = msg.toString()
|
|
309
|
+
})
|
|
310
|
+
vget[10] = rt
|
|
311
|
+
|
|
288
312
|
//del
|
|
289
313
|
rt = null
|
|
290
|
-
vans[
|
|
314
|
+
vans[11] = [{ n: 1, nDeleted: 1, ok: 1 }]
|
|
291
315
|
let ss = await wo.select()
|
|
292
316
|
let d = ss.filter(function(v) {
|
|
293
317
|
return v.name === 'kettle'
|
|
@@ -302,7 +326,7 @@ if (isWindows()) {
|
|
|
302
326
|
// console.log('del catch', msg)
|
|
303
327
|
rt = msg.toString()
|
|
304
328
|
})
|
|
305
|
-
vget[
|
|
329
|
+
vget[11] = rt
|
|
306
330
|
|
|
307
331
|
})
|
|
308
332
|
|
|
@@ -314,7 +338,7 @@ if (isWindows()) {
|
|
|
314
338
|
assert.strict.deepStrictEqual(vget[2], vans[2])
|
|
315
339
|
})
|
|
316
340
|
|
|
317
|
-
it(`should get ${JSON.stringify(vans[3])} for save`, async function() {
|
|
341
|
+
it(`should get ${JSON.stringify(vans[3])} for save(autoInsert=false)`, async function() {
|
|
318
342
|
assert.strict.deepStrictEqual(vget[3], vans[3])
|
|
319
343
|
})
|
|
320
344
|
|
|
@@ -342,10 +366,15 @@ if (isWindows()) {
|
|
|
342
366
|
// assert.strict.deepStrictEqual(vget[9], vans[9])
|
|
343
367
|
// })
|
|
344
368
|
|
|
345
|
-
it(`should get ${JSON.stringify(vans[10])} for
|
|
369
|
+
it(`should get ${JSON.stringify(vans[10])} for save(autoInsert=true)`, async function() {
|
|
346
370
|
assert.strict.deepStrictEqual(vget[10], vans[10])
|
|
347
371
|
})
|
|
348
372
|
|
|
373
|
+
it(`should get ${JSON.stringify(vans[11])} for del`, async function() {
|
|
374
|
+
assert.strict.deepStrictEqual(vget[11], vans[11])
|
|
375
|
+
})
|
|
376
|
+
|
|
349
377
|
})
|
|
378
|
+
|
|
350
379
|
}
|
|
351
380
|
|