w-orm-mongodb 1.1.27 → 1.1.29

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.
@@ -0,0 +1,368 @@
1
+ import assert from 'assert'
2
+ import wo from '../src/WOrmMongodb.mjs'
3
+
4
+
5
+ describe('basic', function() {
6
+ let rt = null
7
+ let vans = {}
8
+ let vget = {}
9
+
10
+
11
+ before(async function () {
12
+
13
+
14
+ let opt = {
15
+ url: 'mongodb://username:password@127.0.0.1:27017',
16
+ db: 'worm',
17
+ cl: 'users',
18
+ }
19
+
20
+
21
+ let rs = [
22
+ {
23
+ id: 'id-peter',
24
+ name: 'peter',
25
+ value: 123,
26
+ },
27
+ {
28
+ id: 'id-rosemary',
29
+ name: 'rosemary',
30
+ value: 123.456,
31
+ },
32
+ {
33
+ id: '',
34
+ name: 'kettle',
35
+ value: 456,
36
+ },
37
+ ]
38
+
39
+
40
+ let rsm = [
41
+ {
42
+ id: 'id-peter',
43
+ name: 'peter(modify)'
44
+ },
45
+ {
46
+ id: 'id-rosemary',
47
+ name: 'rosemary(modify)'
48
+ },
49
+ {
50
+ id: '',
51
+ name: 'kettle(modify)'
52
+ },
53
+ ]
54
+
55
+
56
+ //w
57
+ let w = wo(opt)
58
+
59
+
60
+ //on
61
+ w.on('change', function(mode, data, res) {
62
+ // console.log('change', mode)
63
+ })
64
+
65
+
66
+ //delAll
67
+ rt = null
68
+ vans[1] = {
69
+ nDeleted: 2,
70
+ ok: 1,
71
+ }
72
+ await w.delAll()
73
+ .then(function(msg) {
74
+ // console.log('delAll then', msg)
75
+ //考慮可能有不同初始測試數據
76
+ // delAll then { n: 2, nDeleted: 2, ok: 1 }
77
+ // delAll then { n: 3, nDeleted: 2, ok: 1 }
78
+ //僅針對nDeleted與ok欄位比對
79
+ rt = {
80
+ nDeleted: msg.nDeleted,
81
+ ok: msg.ok,
82
+ }
83
+ })
84
+ .catch(function(msg) {
85
+ // console.log('delAll catch', msg)
86
+ rt = msg.toString()
87
+ })
88
+ vget[1] = rt
89
+
90
+
91
+ //insert
92
+ rt = null
93
+ vans[2] = { n: 3, nInserted: 3, ok: 1 }
94
+ await w.insert(rs)
95
+ .then(function(msg) {
96
+ // console.log('insert then', msg)
97
+ // insert then { n: 3, nInserted: 3, ok: 1 }
98
+ rt = msg
99
+ })
100
+ .catch(function(msg) {
101
+ // console.log('insert catch', msg)
102
+ rt = msg.toString()
103
+ })
104
+ vget[2] = rt
105
+
106
+
107
+ //save
108
+ rt = null
109
+ vans[3] = [
110
+ { n: 1, nModified: 1, ok: 1 },
111
+ { n: 1, nModified: 1, ok: 1 },
112
+ { n: 0, nModified: 0, ok: 1 }
113
+ ]
114
+ await w.save(rsm, { autoInsert: false, atomic: true })
115
+ .then(function(msg) {
116
+ // console.log('save then', msg)
117
+ // save then [
118
+ // { n: 1, nModified: 1, ok: 1 },
119
+ // { n: 1, nModified: 1, ok: 1 },
120
+ // { n: 0, nModified: 0, ok: 1 }
121
+ // ]
122
+ rt = msg
123
+ })
124
+ .catch(function(msg) {
125
+ // console.log('save catch', msg)
126
+ rt = msg.toString()
127
+ })
128
+ vget[3] = rt
129
+
130
+
131
+ //select all
132
+ rt = null
133
+ vans[4] = [
134
+ { id: 'id-peter', name: 'peter(modify)', value: 123 },
135
+ { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 },
136
+ {
137
+ // id: {random id},
138
+ name: 'kettle',
139
+ value: 456
140
+ }
141
+ ]
142
+ await w.select()
143
+ .then(function(msg) {
144
+ // console.log('select all then', msg)
145
+ // select all [
146
+ // { id: 'id-peter', name: 'peter(modify)', value: 123 },
147
+ // { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 },
148
+ // {
149
+ // id: {random id},
150
+ // name: 'kettle',
151
+ // value: 456
152
+ // }
153
+ // ]
154
+ rt = [
155
+ msg[0],
156
+ msg[1],
157
+ {
158
+ name: msg[2].name,
159
+ value: msg[2].value,
160
+ },
161
+ ]
162
+ })
163
+ .catch(function(msg) {
164
+ // console.log('select all catch', msg)
165
+ rt = msg.toString()
166
+ })
167
+ vget[4] = rt
168
+
169
+
170
+ //select
171
+ rt = null
172
+ vans[5] = [{ id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }]
173
+ await w.select({ id: 'id-rosemary' })
174
+ .then(function(msg) {
175
+ // console.log('select then', msg)
176
+ // select [ { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 } ]
177
+ rt = msg
178
+ })
179
+ .catch(function(msg) {
180
+ // console.log('select catch', msg)
181
+ rt = msg.toString()
182
+ })
183
+ vget[5] = rt
184
+
185
+
186
+ //select by $and, $gt, $lt
187
+ rt = null
188
+ vans[6] = [{ id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 }]
189
+ await w.select({ '$and': [{ value: { '$gt': 123 } }, { value: { '$lt': 200 } }] })
190
+ .then(function(msg) {
191
+ // console.log('select by $and, $gt, $lt then', msg)
192
+ // select by $and, $gt, $lt [ { id: 'id-rosemary', name: 'rosemary(modify)', value: 123.456 } ]
193
+ rt = msg
194
+ })
195
+ .catch(function(msg) {
196
+ // console.log('select by $and, $gt, $lt catch', msg)
197
+ rt = msg.toString()
198
+ })
199
+ vget[6] = rt
200
+
201
+
202
+ //select by $or, $gte, $lte
203
+ rt = null
204
+ vans[7] = [
205
+ {
206
+ // id: {random id},
207
+ name: 'kettle',
208
+ value: 456
209
+ }
210
+ ]
211
+ await w.select({ '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 200 } }] })
212
+ .then(function(msg) {
213
+ // console.log('select by $or, $gte, $lte then', msg)
214
+ // select by $or, $gte, $lte [
215
+ // {
216
+ // id: {random id},
217
+ // name: 'kettle',
218
+ // value: 456
219
+ // }
220
+ // ]
221
+ rt = [
222
+ {
223
+ name: msg[0].name,
224
+ value: msg[0].value,
225
+ },
226
+ ]
227
+ })
228
+ .catch(function(msg) {
229
+ // console.log('select by $or, $gte, $lte catch', msg)
230
+ rt = msg.toString()
231
+ })
232
+ vget[7] = rt
233
+
234
+
235
+ //select by $or, $and, $ne, $in, $nin
236
+ rt = null
237
+ vans[8] = [
238
+ {
239
+ id: 'id-rosemary',
240
+ name: 'rosemary(modify)',
241
+ value: 123.456
242
+ },
243
+ {
244
+ // id: {random id},
245
+ name: 'kettle',
246
+ value: 456
247
+ }
248
+ ]
249
+ await w.select({ '$or': [{ '$and': [{ value: { '$ne': 123 } }, { value: { '$in': [123, 321, 123.456, 456] } }, { value: { '$nin': [456, 654] } }] }, { '$or': [{ value: { '$lte': -1 } }, { value: { '$gte': 400 } }] }] })
250
+ .then(function(msg) {
251
+ // console.log('select by $or, $and, $ne, $in, $nin then', msg)
252
+ // select by $or, $and, $ne, $in, $nin [
253
+ // {
254
+ // id: 'id-rosemary',
255
+ // name: 'rosemary(modify)',
256
+ // value: 123.456
257
+ // },
258
+ // {
259
+ // id: {random id},
260
+ // name: 'kettle',
261
+ // value: 456
262
+ // }
263
+ // ]
264
+ rt = [
265
+ msg[0],
266
+ {
267
+ name: msg[1].name,
268
+ value: msg[1].value,
269
+ },
270
+ ]
271
+ })
272
+ .catch(function(msg) {
273
+ // console.log('select by $or, $and, $ne, $in, $nin catch', msg)
274
+ rt = msg.toString()
275
+ })
276
+ vget[8] = rt
277
+
278
+
279
+ //select by regex
280
+ rt = null
281
+ vans[9] = [{ id: 'id-peter', name: 'peter(modify)', value: 123 }]
282
+ await w.select({ name: { $regex: 'PeT', $options: '$i' } })
283
+ .then(function(msg) {
284
+ // console.log('select by regex then', msg)
285
+ // selectReg [ { id: 'id-peter', name: 'peter(modify)', value: 123 } ]
286
+ rt = msg
287
+ })
288
+ .catch(function(msg) {
289
+ // console.log('select by regex catch', msg)
290
+ rt = msg.toString()
291
+ })
292
+ vget[9] = rt
293
+
294
+
295
+ //del
296
+ rt = null
297
+ vans[10] = [{ n: 1, nDeleted: 1, ok: 1 }]
298
+ let ss = await w.select()
299
+ let d = ss.filter(function(v) {
300
+ return v.name === 'kettle'
301
+ })
302
+ await w.del(d)
303
+ .then(function(msg) {
304
+ // console.log('del then', msg)
305
+ // del then [ { n: 1, nDeleted: 1, ok: 1 } ]
306
+ rt = msg
307
+ })
308
+ .catch(function(msg) {
309
+ // console.log('del catch', msg)
310
+ rt = msg.toString()
311
+ })
312
+ vget[10] = rt
313
+
314
+
315
+ })
316
+
317
+
318
+ it(`should get ${JSON.stringify(vans[1])} for delAll`, async function() {
319
+ assert.strict.deepStrictEqual(vget[1], vans[1])
320
+ })
321
+
322
+
323
+ it(`should get ${JSON.stringify(vans[2])} for insert`, async function() {
324
+ assert.strict.deepStrictEqual(vget[2], vans[2])
325
+ })
326
+
327
+
328
+ it(`should get ${JSON.stringify(vans[3])} for save`, async function() {
329
+ assert.strict.deepStrictEqual(vget[3], vans[3])
330
+ })
331
+
332
+
333
+ it(`should get ${JSON.stringify(vans[4])} for select all`, async function() {
334
+ assert.strict.deepStrictEqual(vget[4], vans[4])
335
+ })
336
+
337
+
338
+ it(`should get ${JSON.stringify(vans[5])} for select`, async function() {
339
+ assert.strict.deepStrictEqual(vget[5], vans[5])
340
+ })
341
+
342
+
343
+ it(`should get ${JSON.stringify(vans[6])} for select by $and, $gt, $lt`, async function() {
344
+ assert.strict.deepStrictEqual(vget[6], vans[6])
345
+ })
346
+
347
+
348
+ it(`should get ${JSON.stringify(vans[7])} for select by $or, $gte, $lte`, async function() {
349
+ assert.strict.deepStrictEqual(vget[7], vans[7])
350
+ })
351
+
352
+
353
+ it(`should get ${JSON.stringify(vans[8])} for select by $or, $and, $ne, $in, $nin`, async function() {
354
+ assert.strict.deepStrictEqual(vget[8], vans[8])
355
+ })
356
+
357
+
358
+ it(`should get ${JSON.stringify(vans[9])} for select by regex`, async function() {
359
+ assert.strict.deepStrictEqual(vget[9], vans[9])
360
+ })
361
+
362
+
363
+ it(`should get ${JSON.stringify(vans[10])} for del`, async function() {
364
+ assert.strict.deepStrictEqual(vget[10], vans[10])
365
+ })
366
+
367
+
368
+ })
@@ -0,0 +1,182 @@
1
+ import assert from 'assert'
2
+ import path from 'path'
3
+ import fs from 'fs'
4
+ import wo from '../src/WOrmMongodb.mjs'
5
+
6
+
7
+ describe('gfs', function() {
8
+ let rt = null
9
+ let vans = {}
10
+ let vget = {}
11
+
12
+
13
+ before(async function () {
14
+
15
+
16
+ let opt = {
17
+ url: 'mongodb://username:password@127.0.0.1:27017',
18
+ db: 'worm',
19
+ cl: 'usersGfs',
20
+ }
21
+
22
+
23
+ //w
24
+ let w = wo(opt)
25
+
26
+
27
+ //on
28
+ w.on('change', function(mode, data, res) {
29
+ // console.log('change', mode)
30
+ })
31
+
32
+
33
+ //fn_in, fn_out
34
+ let fn_in = path.resolve('../', './_data', 'data(in).dat')
35
+ let fn_out = path.resolve('../', './_data', 'data(out).dat')
36
+ // console.log('fn_in', fn_in)
37
+ // console.log('fn_out', fn_out)
38
+
39
+
40
+ //unlinkSync
41
+ try {
42
+ fs.unlinkSync(fn_out)
43
+ }
44
+ catch (err) {}
45
+
46
+
47
+ //u8a
48
+ let b = await fs.readFileSync(fn_in)
49
+ let u8a = new Uint8Array(b)
50
+ // let u8a = new Uint8Array([66, 97, 115]) //Uint8Array data from nodejs or browser
51
+ // console.log('u8a', u8a)
52
+
53
+
54
+ //delAllGfs
55
+ rt = null
56
+ vans[1] = { n: 0, ok: 1 }
57
+ await w.delAllGfs()
58
+ .then(function(msg) {
59
+ // console.log('delAllGfs then', msg)
60
+ // delAllGfs then { n: 0, ok: 1 }
61
+ rt = msg
62
+ })
63
+ .catch(function(msg) {
64
+ // console.log('delAllGfs catch', msg)
65
+ rt = msg.toString()
66
+ })
67
+ vget[1] = rt
68
+
69
+
70
+ //insertGfs
71
+ let gi = null
72
+ rt = null
73
+ vans[2] = {
74
+ n: 1,
75
+ ok: 1,
76
+ // id: {random id},
77
+ }
78
+ await w.insertGfs(u8a)
79
+ .then(function(msg) {
80
+ // console.log('insertGfs then', msg)
81
+ // insertGfs { n: 1, ok: 1, id: {random id} }
82
+ gi = msg
83
+ rt = {
84
+ n: msg.n,
85
+ ok: msg.ok,
86
+ }
87
+ })
88
+ .catch(function(msg) {
89
+ // console.log('insertGfs catch', msg)
90
+ rt = msg.toString()
91
+ })
92
+ vget[2] = rt
93
+
94
+
95
+ //selectGfs
96
+ rt = null
97
+ vans[3] = [
98
+ 0,
99
+ 0,
100
+ 0,
101
+ 24,
102
+ 102,
103
+ 47381362,
104
+ ]
105
+ await w.selectGfs(gi.id)
106
+ .then(function(msg) {
107
+ // console.log('selectGfs then', msg)
108
+ // console.log('msg[0]', msg[0], msg[0] === 0)
109
+ // console.log('msg[1]', msg[1], msg[1] === 0)
110
+ // console.log('msg[2]', msg[2], msg[2] === 0)
111
+ // console.log('msg[3]', msg[3], msg[3] === 24)
112
+ // console.log('msg[4]', msg[4], msg[4] === 102)
113
+ // console.log('msg.length', msg.length, msg.length === 47381362)
114
+ // selectGfs Uint8Array(47381362) [
115
+ // 0, 0, 0, 24, 102, 116, 121, 112, 109, 112, 52, 50,
116
+ // 0, 0, 0, 0, 105, 115, 111, 109, 109, 112, 52, 50,
117
+ // 0, 2, 14, 73, 109, 111, 111, 118, 0, 0, 0, 108,
118
+ // 109, 118, 104, 100, 0, 0, 0, 0, 214, 15, 24, 167,
119
+ // 214, 15, 24, 167, 0, 1, 95, 144, 1, 106, 95, 88,
120
+ // 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
121
+ // 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
122
+ // 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
123
+ // 0, 0, 0, 0,
124
+ // ... 47381262 more items
125
+ // ]
126
+ // fs.writeFileSync(fn_out, msg)
127
+ rt = [
128
+ msg[0],
129
+ msg[1],
130
+ msg[2],
131
+ msg[3],
132
+ msg[4],
133
+ msg.length,
134
+ ]
135
+ })
136
+ .catch(function(msg) {
137
+ // console.log('selectGfs catch', msg)
138
+ rt = msg.toString()
139
+ })
140
+ vget[3] = rt
141
+
142
+
143
+ //delGfs
144
+ rt = null
145
+ vans[4] = { n: 1, nDeleted: 1, ok: 1 }
146
+ await w.delGfs(gi.id)
147
+ .then(function(msg) {
148
+ // console.log('delGfs then', msg)
149
+ // delGfs { n: 1, nDeleted: 1, ok: 1 }
150
+ rt = msg
151
+ })
152
+ .catch(function(msg) {
153
+ // console.log('delGfs catch', msg)
154
+ rt = msg.toString()
155
+ })
156
+ vget[4] = rt
157
+
158
+
159
+ })
160
+
161
+
162
+ it(`should get ${JSON.stringify(vans[1])} for delAllGfs`, function() {
163
+ assert.strict.deepStrictEqual(vget[1], vans[1])
164
+ })
165
+
166
+
167
+ it(`should get ${JSON.stringify(vans[2])} for insertGfs`, async function() {
168
+ assert.strict.deepStrictEqual(vget[2], vans[2])
169
+ })
170
+
171
+
172
+ it(`should get ${JSON.stringify(vans[3])} for selectGfs`, async function() {
173
+ assert.strict.deepStrictEqual(vget[3], vans[3])
174
+ })
175
+
176
+
177
+ it(`should get ${JSON.stringify(vans[4])} for delGfs`, async function() {
178
+ assert.strict.deepStrictEqual(vget[4], vans[4])
179
+ })
180
+
181
+
182
+ })
package/test/all.test.mjs DELETED
@@ -1,10 +0,0 @@
1
- import assert from 'assert'
2
-
3
-
4
- describe('all', function() {
5
-
6
- it('test in localhost', function() {
7
- assert.strict.deepEqual(1, 1)
8
- })
9
-
10
- })