w-orm-mongodb 1.1.27 → 1.1.28

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.
@@ -14,6 +14,7 @@
14
14
  <link type="text/css" rel="stylesheet" href="styles/prettify.css">
15
15
  <link type="text/css" rel="stylesheet" href="styles/jsdoc.css">
16
16
  <script src="scripts/nav.js" defer></script>
17
+
17
18
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
18
19
  </head>
19
20
  <body>
@@ -27,7 +28,9 @@
27
28
 
28
29
  <nav >
29
30
 
31
+
30
32
  <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="WOrmMongodb.html">WOrmMongodb</a><ul class='methods'><li data-type='method'><a href="WOrmMongodb.html#.del">del</a></li><li data-type='method'><a href="WOrmMongodb.html#.delAll">delAll</a></li><li data-type='method'><a href="WOrmMongodb.html#.delAllGfs">delAllGfs</a></li><li data-type='method'><a href="WOrmMongodb.html#.delGfs">delGfs</a></li><li data-type='method'><a href="WOrmMongodb.html#.insert">insert</a></li><li data-type='method'><a href="WOrmMongodb.html#.insertGfs">insertGfs</a></li><li data-type='method'><a href="WOrmMongodb.html#.save">save</a></li><li data-type='method'><a href="WOrmMongodb.html#.select">select</a></li><li data-type='method'><a href="WOrmMongodb.html#.selectGfs">selectGfs</a></li></ul></li></ul>
33
+
31
34
  </nav>
32
35
 
33
36
  <div id="main">
@@ -104,37 +107,47 @@ function WOrmMongodb(opt = {}) {
104
107
  * @returns {Promise} 回傳Promise,resolve回傳數據,reject回傳錯誤訊息
105
108
  */
106
109
  async function select(find = {}) {
107
-
108
- //pm
109
- let pm = genPm()
110
+ let isErr = false
110
111
 
111
112
  //client
112
- let client = await MongoClient.connect(opt.url, optMGConn)
113
+ // let client = await MongoClient.connect(opt.url, optMGConn)
114
+ let client = new MongoClient(opt.url, optMGConn)
113
115
 
114
- //database, collection
115
- let database = client.db(opt.db)
116
- let collection = database.collection(opt.cl)
116
+ //res
117
+ let res = null
118
+ try {
117
119
 
118
- //find
119
- collection
120
- .find(find) //find第二參數為option, 可放sort或limit等
120
+ //database, collection
121
+ let database = client.db(opt.db)
122
+ let collection = database.collection(opt.cl)
123
+
124
+ //find
125
+ let cursor = collection.find(find)
121
126
  //.sort({ $natural: -1 })
122
127
  //.limit(N)
123
- .toArray(function(err, res) {
124
- if (err) {
125
- pm.reject(err)
126
- }
127
- else {
128
- res = map(res, function(v) {
129
- v = omit(v, '_id')
130
- return v
131
- })
132
- pm.resolve(res)
133
- }
134
- client.close()
128
+
129
+ //toArray
130
+ res = await cursor.toArray()
131
+
132
+ //omit
133
+ res = map(res, function(v) {
134
+ v = omit(v, '_id')
135
+ return v
135
136
  })
136
137
 
137
- return pm
138
+ }
139
+ catch (err) {
140
+ isErr = true
141
+ res = err
142
+ }
143
+ finally {
144
+ await client.close()
145
+ }
146
+
147
+ if (isErr) {
148
+ return Promise.reject(res)
149
+ }
150
+ return res
138
151
  }
139
152
 
140
153
 
@@ -146,60 +159,74 @@ function WOrmMongodb(opt = {}) {
146
159
  * @returns {Promise} 回傳Promise,resolve回傳插入結果,reject回傳錯誤訊息
147
160
  */
148
161
  async function insert(data) {
162
+ let isErr = false
149
163
 
150
164
  //cloneDeep
151
165
  data = cloneDeep(data)
152
166
 
153
- //pm
154
- let pm = genPm()
155
-
156
167
  //client
157
- let client = await MongoClient.connect(opt.url, optMGConn)
168
+ // let client = await MongoClient.connect(opt.url, optMGConn)
169
+ let client = new MongoClient(opt.url, optMGConn)
158
170
 
159
- //database, collection
160
- let database = client.db(opt.db)
161
- let collection = database.collection(opt.cl)
171
+ //res
172
+ let res = null
173
+ try {
162
174
 
163
- //check
164
- if (!isarr(data)) {
165
- data = [data]
166
- }
175
+ //database, collection
176
+ let database = client.db(opt.db)
177
+ let collection = database.collection(opt.cl)
167
178
 
168
- //check
169
- data = map(data, function(v) {
170
- if (!v.id) {
171
- v.id = genID()
179
+ //check
180
+ if (!isarr(data)) {
181
+ data = [data]
172
182
  }
173
- return v
174
- })
175
183
 
176
- //insertMany
177
- collection
178
- .insertMany(data, function(err, res) {
179
- if (err) {
180
- pm.reject(err)
184
+ //check id
185
+ data = map(data, function(v) {
186
+ if (!v.id) {
187
+ v.id = genID()
181
188
  }
182
- else {
189
+ return v
190
+ })
183
191
 
184
- //check
185
- if (res.insertedCount > 0) {
186
- res = {
187
- n: size(data),
188
- nInserted: res.insertedCount,
189
- ok: res.acknowledged ? 1 : 0,
190
- }
191
- pm.resolve(res)
192
- ee.emit('change', 'insert', data, res)
193
- }
194
- else {
195
- pm.reject(err)
196
- }
192
+ //insertMany
193
+ res = await collection.insertMany(data)
194
+
195
+ //check
196
+ if (res.insertedCount > 0) {
197
197
 
198
+ //res
199
+ res = {
200
+ n: size(data),
201
+ nInserted: res.insertedCount,
202
+ ok: res.acknowledged ? 1 : 0,
198
203
  }
199
- client.close()
200
- })
201
204
 
202
- return pm
205
+ //emit
206
+ ee.emit('change', 'insert', data, res)
207
+
208
+ }
209
+ else {
210
+ isErr = true
211
+
212
+ //res
213
+ res = `no insert data`
214
+
215
+ }
216
+
217
+ }
218
+ catch (err) {
219
+ isErr = true
220
+ res = err
221
+ }
222
+ finally {
223
+ await client.close()
224
+ }
225
+
226
+ if (isErr) {
227
+ return Promise.reject(res)
228
+ }
229
+ return res
203
230
  }
204
231
 
205
232
 
@@ -214,6 +241,7 @@ function WOrmMongodb(opt = {}) {
214
241
  * @returns {Promise} 回傳Promise,resolve回傳儲存結果,reject回傳錯誤訊息
215
242
  */
216
243
  async function save(data, option = {}) {
244
+ let isErr = false
217
245
 
218
246
  //cloneDeep
219
247
  data = cloneDeep(data)
@@ -222,104 +250,96 @@ function WOrmMongodb(opt = {}) {
222
250
  let autoInsert = get(option, 'autoInsert', true)
223
251
  let atomic = get(option, 'atomic', false)
224
252
 
225
- //pm
226
- let pm = genPm()
227
-
228
253
  //client
229
- let client = await MongoClient.connect(opt.url, optMGConn)
230
-
231
- //database, collection
232
- let database = client.db(opt.db)
233
- let collection = database.collection(opt.cl)
254
+ // let client = await MongoClient.connect(opt.url, optMGConn)
255
+ let client = new MongoClient(opt.url, optMGConn)
234
256
 
235
- //check
236
- if (!isarr(data)) {
237
- data = [data]
238
- }
257
+ //res
258
+ let res = null
259
+ try {
239
260
 
240
- //oper
241
- let oper = null
242
- if (atomic) {
243
- oper = 'findOneAndUpdate'
244
- }
245
- else {
246
- oper = 'updateOne'
247
- }
261
+ //database, collection
262
+ let database = client.db(opt.db)
263
+ let collection = database.collection(opt.cl)
248
264
 
249
- //pmSeries
250
- pmSeries(data, async(v) => {
251
- let pmm = genPm()
265
+ //check
266
+ if (!isarr(data)) {
267
+ data = [data]
268
+ }
252
269
 
253
270
  //oper
254
- collection[oper]({ id: v.id }, { $set: v }, function(err, res) {
255
- // console.log(oper, 'res', res)
256
- if (err) {
257
- pmm.reject(err)
258
- }
259
- else {
271
+ let oper = null
272
+ if (atomic) {
273
+ oper = 'findOneAndUpdate'
274
+ }
275
+ else {
276
+ oper = 'updateOne'
277
+ }
260
278
 
261
- //lastErrorObject for findOneAndUpdate
262
- if (res.lastErrorObject) {
263
- // console.log('res.lastErrorObject', res.lastErrorObject)
264
- res = {
265
- // lastErrorObject: { n: 1, updatedExisting: true },
266
- // value: {
267
- // _id: new ObjectId("615c18bb6e5db9935b10d88e"),
268
- // id: 'id-rosemary',
269
- // name: 'rosemary',
270
- // value: 123.456
271
- // },
272
- // ok: 1
273
- n: res.lastErrorObject.n,
274
- nModified: res.lastErrorObject.updatedExisting ? 1 : 0,
275
- ok: 1,
276
- }
277
- }
278
- else {
279
- res = {
280
- // acknowledged: true,
281
- // modifiedCount: 1,
282
- // upsertedId: null,
283
- // upsertedCount: 0,
284
- // matchedCount: 1
285
- n: res.matchedCount,
286
- nModified: res.modifiedCount,
287
- ok: res.acknowledged ? 1 : 0,
288
- }
289
- }
290
- // console.log('res', res)
291
-
292
- //autoInsert
293
- if (autoInsert &amp;&amp; res.n === 0) {
294
- insert(v)
295
- .then(function(res) {
296
- pmm.resolve(res)
297
- })
298
- .catch(function(err) {
299
- pmm.reject(err)
300
- })
279
+ //pmSeries
280
+ res = await pmSeries(data, async(v) => {
281
+
282
+ //rest
283
+ let rest = null
284
+
285
+ //oper
286
+ rest = await collection[oper]({ id: v.id }, { $set: v },)
287
+
288
+ //lastErrorObject for findOneAndUpdate
289
+ if (rest.lastErrorObject) {
290
+ // console.log('rest.lastErrorObject', rest.lastErrorObject)
291
+ rest = {
292
+ // lastErrorObject: { n: 1, updatedExisting: true },
293
+ // value: {
294
+ // _id: new ObjectId("615c18bb6e5db9935b10d88e"),
295
+ // id: 'id-rosemary',
296
+ // name: 'rosemary',
297
+ // value: 123.456
298
+ // },
299
+ // ok: 1
300
+ n: rest.lastErrorObject.n,
301
+ nModified: rest.lastErrorObject.updatedExisting ? 1 : 0,
302
+ ok: 1,
301
303
  }
302
- else {
303
- pmm.resolve(res)
304
+ }
305
+ else {
306
+ rest = {
307
+ // acknowledged: true,
308
+ // modifiedCount: 1,
309
+ // upsertedId: null,
310
+ // upsertedCount: 0,
311
+ // matchedCount: 1
312
+ n: rest.matchedCount,
313
+ nModified: rest.modifiedCount,
314
+ ok: rest.acknowledged ? 1 : 0,
304
315
  }
316
+ }
317
+ // console.log('rest', rest)
305
318
 
319
+ //autoInsert
320
+ if (autoInsert &amp;&amp; rest.n === 0) {
321
+ rest = await insert(v)
306
322
  }
307
- })
308
323
 
309
- return pmm
310
- })
311
- .then(function(msg) {
312
- pm.resolve(msg)
313
- ee.emit('change', 'save', data, msg)
314
- })
315
- .catch(function(msg) {
316
- pm.reject(msg)
317
- })
318
- .finally(function() {
319
- client.close()
324
+ return rest
320
325
  })
321
326
 
322
- return pm
327
+ //emit
328
+ ee.emit('change', 'save', data, res)
329
+
330
+ }
331
+ catch (err) {
332
+ isErr = true
333
+ res = err
334
+ }
335
+ finally {
336
+ await client.close()
337
+ }
338
+
339
+ if (isErr) {
340
+ return Promise.reject(res)
341
+ }
342
+ return res
323
343
  }
324
344
 
325
345
 
@@ -331,59 +351,63 @@ function WOrmMongodb(opt = {}) {
331
351
  * @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
332
352
  */
333
353
  async function del(data) {
354
+ let isErr = false
334
355
 
335
356
  //cloneDeep
336
357
  data = cloneDeep(data)
337
358
 
338
- //pm
339
- let pm = genPm()
340
-
341
359
  //client
342
- let client = await MongoClient.connect(opt.url, optMGConn)
360
+ // let client = await MongoClient.connect(opt.url, optMGConn)
361
+ let client = new MongoClient(opt.url, optMGConn)
343
362
 
344
- //database, collection
345
- let database = client.db(opt.db)
346
- let collection = database.collection(opt.cl)
363
+ //res
364
+ let res = null
365
+ try {
347
366
 
348
- //check
349
- if (!isarr(data)) {
350
- data = [data]
351
- }
367
+ //database, collection
368
+ let database = client.db(opt.db)
369
+ let collection = database.collection(opt.cl)
352
370
 
353
- //pmSeries
354
- pmSeries(data, function(v) {
355
- let pmm = genPm()
371
+ //check
372
+ if (!isarr(data)) {
373
+ data = [data]
374
+ }
356
375
 
357
- //deleteOne
358
- collection
359
- .deleteOne({ id: v.id }, function(err, res) {
360
- if (err) {
361
- pmm.resolve(err) //找不到數據刪除採resovle回傳
362
- }
363
- else {
364
- res = {
365
- n: res.deletedCount,
366
- nDeleted: res.deletedCount,
367
- ok: res.acknowledged ? 1 : 0,
368
- }
369
- pmm.resolve(res)
370
- }
371
- })
376
+ //pmSeries
377
+ res = await pmSeries(data, async(v) => {
372
378
 
373
- return pmm
374
- })
375
- .then(function(msg) {
376
- pm.resolve(msg)
377
- ee.emit('change', 'del', data, msg)
378
- })
379
- .catch(function(msg) {
380
- pm.reject(msg)
381
- })
382
- .finally(function() {
383
- client.close()
379
+ //rest
380
+ let rest = null
381
+
382
+ //deleteOne
383
+ rest = await collection.deleteOne({ id: v.id })
384
+
385
+ //rest
386
+ rest = {
387
+ n: rest.deletedCount,
388
+ nDeleted: rest.deletedCount,
389
+ ok: rest.acknowledged ? 1 : 0,
390
+ }
391
+
392
+ return rest
384
393
  })
385
394
 
386
- return pm
395
+ //emit
396
+ ee.emit('change', 'del', data, res)
397
+
398
+ }
399
+ catch (err) {
400
+ isErr = true
401
+ res = err
402
+ }
403
+ finally {
404
+ await client.close()
405
+ }
406
+
407
+ if (isErr) {
408
+ return Promise.reject(res)
409
+ }
410
+ return res
387
411
  }
388
412
 
389
413
 
@@ -395,36 +419,46 @@ function WOrmMongodb(opt = {}) {
395
419
  * @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
396
420
  */
397
421
  async function delAll(find = {}) {
398
-
399
- //pm
400
- let pm = genPm()
422
+ let isErr = false
401
423
 
402
424
  //client
403
- let client = await MongoClient.connect(opt.url, optMGConn)
425
+ // let client = await MongoClient.connect(opt.url, optMGConn)
426
+ let client = new MongoClient(opt.url, optMGConn)
404
427
 
405
- //database, collection
406
- let database = client.db(opt.db)
407
- let collection = database.collection(opt.cl)
428
+ //res
429
+ let res = null
430
+ try {
408
431
 
409
- //deleteMany
410
- collection
411
- .deleteMany(find, function(err, res) {
412
- if (err) {
413
- pm.resolve(err) //找不到數據刪除採resovle回傳
414
- }
415
- else {
416
- res = {
417
- n: res.deletedCount,
418
- nDeleted: res.deletedCount,
419
- ok: res.acknowledged ? 1 : 0,
420
- }
421
- pm.resolve(res)
422
- ee.emit('change', 'delAll', null, res)
423
- }
424
- client.close()
425
- })
432
+ //database, collection
433
+ let database = client.db(opt.db)
434
+ let collection = database.collection(opt.cl)
435
+
436
+ //deleteMany
437
+ res = await collection.deleteMany(find)
438
+
439
+ //res
440
+ res = {
441
+ n: res.deletedCount,
442
+ nDeleted: res.deletedCount,
443
+ ok: res.acknowledged ? 1 : 0,
444
+ }
445
+
446
+ //emit
447
+ ee.emit('change', 'delAll', null, res)
448
+
449
+ }
450
+ catch (err) {
451
+ isErr = true
452
+ res = err
453
+ }
454
+ finally {
455
+ await client.close()
456
+ }
426
457
 
427
- return pm
458
+ if (isErr) {
459
+ return Promise.reject(res)
460
+ }
461
+ return res
428
462
  }
429
463
 
430
464
 
@@ -436,9 +470,7 @@ function WOrmMongodb(opt = {}) {
436
470
  * @returns {Promise} 回傳Promise,resolve回傳插入結果,reject回傳錯誤訊息
437
471
  */
438
472
  async function insertGfs(u8a) {
439
-
440
- //pm
441
- let pm = genPm()
473
+ let isErr = false
442
474
 
443
475
  //id
444
476
  let id = genID()
@@ -447,47 +479,72 @@ function WOrmMongodb(opt = {}) {
447
479
  let buf = Buffer.from(u8a)
448
480
 
449
481
  //client
450
- let client = await MongoClient.connect(opt.url, optMGConn)
482
+ // let client = await MongoClient.connect(opt.url, optMGConn)
483
+ let client = new MongoClient(opt.url, optMGConn)
451
484
 
452
- //database, collection
453
- let database = client.db(opt.db)
485
+ //core
486
+ let core = async (id, buf) => {
454
487
 
455
- //bucket
456
- let bucket = new mongodb.GridFSBucket(database, {
457
- chunkSizeBytes: 10 * 1024 * 1024, //10mb
458
- bucketName: opt.cl
459
- })
488
+ //pm
489
+ let pm = genPm()
460
490
 
461
- //stream
462
- let sm = new stream.Readable()
463
- sm._read = () => {}
464
- sm.push(buf)
465
- sm.push(null)
466
- sm.pipe(bucket.openUploadStream(id)) //pipe是接bucket的Writable, 所以會監聽finish
467
- .on('error', function(err) {
491
+ //database
492
+ let database = client.db(opt.db)
468
493
 
469
- //reject
470
- pm.reject(err)
494
+ //bucket
495
+ let bucket = new mongodb.GridFSBucket(database, {
496
+ chunkSizeBytes: 10 * 1024 * 1024, //10mb
497
+ bucketName: opt.cl
498
+ })
471
499
 
472
- //close
473
- client.close()
500
+ //stream
501
+ let sm = new stream.Readable()
502
+ sm._read = () => {}
503
+ sm.push(buf)
504
+ sm.push(null)
505
+ sm.pipe(bucket.openUploadStream(id)) //pipe是接bucket的Writable, 所以會監聽finish
506
+ .on('error', function(err) {
474
507
 
475
- })
476
- .on('finish', function() {
477
- let res = { n: 1, ok: 1, id: id }
508
+ //reject
509
+ pm.reject(err)
478
510
 
479
- //resolve
480
- pm.resolve(res)
511
+ })
512
+ .on('finish', function() {
481
513
 
482
- //emit
483
- ee.emit('change', 'insertGfs', null, res)
514
+ //res
515
+ let res = { n: 1, ok: 1, id }
516
+
517
+ //resolve
518
+ pm.resolve(res)
484
519
 
485
- //close
486
- client.close()
520
+ })
487
521
 
488
- })
522
+ return pm
523
+ }
524
+
525
+ //res
526
+ let res = null
527
+ try {
528
+
529
+ //core
530
+ res = await core(id, buf)
531
+
532
+ //emit
533
+ ee.emit('change', 'insertGfs', null, res)
534
+
535
+ }
536
+ catch (err) {
537
+ isErr = true
538
+ res = err
539
+ }
540
+ finally {
541
+ await client.close()
542
+ }
489
543
 
490
- return pm
544
+ if (isErr) {
545
+ return Promise.reject(res)
546
+ }
547
+ return res
491
548
  }
492
549
 
493
550
 
@@ -499,93 +556,106 @@ function WOrmMongodb(opt = {}) {
499
556
  * @returns {Promise} 回傳Promise,resolve回傳數據,reject回傳錯誤訊息
500
557
  */
501
558
  async function selectGfs(id) {
502
-
503
- //pm
504
- let pm = genPm()
559
+ let isErr = false
505
560
 
506
561
  //client
507
- let client = await MongoClient.connect(opt.url, optMGConn)
562
+ // let client = await MongoClient.connect(opt.url, optMGConn)
563
+ let client = new MongoClient(opt.url, optMGConn)
508
564
 
509
- //database, collection
510
- let database = client.db(opt.db)
565
+ //core
566
+ let core = async (id) => {
511
567
 
512
- //bucket
513
- let bucket = new mongodb.GridFSBucket(database, {
514
- chunkSizeBytes: 10 * 1024 * 1024, //10mb
515
- bucketName: opt.cl
516
- })
568
+ //pm
569
+ let pm = genPm()
517
570
 
518
- //buf
519
- let buf = Buffer.from('')
571
+ //database
572
+ let database = client.db(opt.db)
520
573
 
521
- //stream
522
- let sm = bucket.openDownloadStreamByName(id)
523
- sm.on('data', function (chunk) {
524
- buf = Buffer.concat([buf, chunk])
525
- })
526
- sm.on('error', function (err) {
574
+ //bucket
575
+ let bucket = new mongodb.GridFSBucket(database, {
576
+ chunkSizeBytes: 10 * 1024 * 1024, //10mb
577
+ bucketName: opt.cl
578
+ })
527
579
 
528
- //reject
529
- pm.reject(err)
580
+ //buf
581
+ let buf = Buffer.from('')
530
582
 
531
- //close
532
- client.close()
583
+ //stream
584
+ let sm = bucket.openDownloadStreamByName(id)
585
+ sm.on('data', function (chunk) {
586
+ buf = Buffer.concat([buf, chunk])
587
+ })
588
+ sm.on('error', function (err) {
533
589
 
534
- })
535
- sm.on('end', function () {
590
+ //reject
591
+ pm.reject(err)
536
592
 
537
- //u8a
538
- let u8a = new Uint8Array(buf)
593
+ })
594
+ sm.on('end', function () {
539
595
 
540
- //clean memory
541
- buf = null
596
+ //u8a
597
+ let u8a = new Uint8Array(buf)
542
598
 
543
- //resolve
544
- pm.resolve(u8a)
599
+ //clean memory
600
+ buf = null
545
601
 
546
- //close
547
- client.close()
602
+ //resolve
603
+ pm.resolve(u8a)
548
604
 
549
- })
605
+ })
550
606
 
551
- return pm
552
- }
607
+ return pm
608
+ }
553
609
 
610
+ //res
611
+ let res = null
612
+ try {
554
613
 
555
- async function _findGfs(find = {}, bucket = null) {
614
+ //core
615
+ res = await core(id)
556
616
 
557
- //pm
558
- let pm = genPm()
617
+ }
618
+ catch (err) {
619
+ isErr = true
620
+ res = err
621
+ }
622
+ finally {
623
+ await client.close()
624
+ }
559
625
 
560
- //bucket
561
- if (bucket === null) {
626
+ if (isErr) {
627
+ return Promise.reject(res)
628
+ }
629
+ return res
630
+ }
562
631
 
563
- //client
564
- let client = await MongoClient.connect(opt.url, optMGConn)
565
632
 
566
- //database, collection
567
- let database = client.db(opt.db)
633
+ async function _findGfs(find = {}, bucket) {
634
+ let isErr = false
568
635
 
569
- //bucket
570
- bucket = new mongodb.GridFSBucket(database, {
571
- chunkSizeBytes: 10 * 1024 * 1024, //10mb
572
- bucketName: opt.cl
573
- })
636
+ //res
637
+ let res = null
638
+ try {
574
639
 
575
- }
640
+ //find
641
+ let cursor = bucket.find(find)
576
642
 
577
- //find
578
- bucket.find(find)
579
- .toArray(function(err, res) {
580
- if (err) {
581
- pm.reject(err)
582
- }
583
- else {
584
- pm.resolve(res)
585
- }
586
- })
643
+ //toArray
644
+ res = await cursor.toArray()
645
+
646
+ }
647
+ catch (err) {
648
+ isErr = true
649
+ res = err
650
+ }
651
+ finally {
652
+ // await client.close()
653
+ }
587
654
 
588
- return pm
655
+ if (isErr) {
656
+ return Promise.reject(res)
657
+ }
658
+ return res
589
659
  }
590
660
 
591
661
 
@@ -597,87 +667,101 @@ function WOrmMongodb(opt = {}) {
597
667
  * @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
598
668
  */
599
669
  async function delGfs(id) {
600
-
601
- //pm
602
- let pm = genPm()
670
+ let isErr = false
603
671
 
604
672
  //client
605
- let client = await MongoClient.connect(opt.url, optMGConn)
673
+ // let client = await MongoClient.connect(opt.url, optMGConn)
674
+ let client = new MongoClient(opt.url, optMGConn)
606
675
 
607
- //database, collection
608
- let database = client.db(opt.db)
676
+ //res
677
+ let res = null
678
+ try {
609
679
 
610
- //bucket
611
- let bucket = new mongodb.GridFSBucket(database, {
612
- chunkSizeBytes: 10 * 1024 * 1024, //10mb
613
- bucketName: opt.cl
614
- })
615
-
616
- //_findGfs
617
- let res = await _findGfs({ filename: id }, bucket)
680
+ //database, collection
681
+ let database = client.db(opt.db)
618
682
 
619
- //check
620
- if (res.length === 0) {
621
- pm.reject('can not find id')
622
- client.close()
623
- }
624
- else if (res.length > 1) {
625
- pm.reject('duplicate id')
626
- client.close()
627
- }
628
- else {
683
+ //bucket
684
+ let bucket = new mongodb.GridFSBucket(database, {
685
+ chunkSizeBytes: 10 * 1024 * 1024, //10mb
686
+ bucketName: opt.cl
687
+ })
629
688
 
630
- //bid, get _id from res[0]
631
- let bid = res[0]._id
689
+ //_findGfs
690
+ res = await _findGfs({ filename: id }, bucket)
632
691
 
633
- //delete
634
- bucket.delete(bid, function(err) {
635
- if (err) {
636
- pm.reject(err)
637
- }
638
- else {
639
- let res = {
640
- n: 1,
641
- nDeleted: 1,
642
- ok: 1,
643
- }
692
+ //check
693
+ if (res.length === 0) {
694
+ res = `can not find id[${id}]`
695
+ }
696
+ else if (res.length > 1) {
697
+ res = `duplicate id[${id}]`
698
+ }
699
+ else {
644
700
 
645
- //resolve
646
- pm.resolve(res)
701
+ //bid, get _id from res[0]
702
+ let bid = res[0]._id
647
703
 
648
- //emit
649
- ee.emit('change', 'delGfs', null, res)
704
+ //delete
705
+ res = await bucket.delete(bid)
650
706
 
707
+ //res
708
+ res = {
709
+ n: 1,
710
+ nDeleted: 1,
711
+ ok: 1,
651
712
  }
652
- client.close()
653
- })
713
+
714
+ //emit
715
+ ee.emit('change', 'delGfs', null, res)
716
+
717
+ }
654
718
 
655
719
  }
720
+ catch (err) {
721
+ isErr = true
722
+ res = err
723
+ }
724
+ finally {
725
+ await client.close()
726
+ }
656
727
 
657
- return pm
728
+ if (isErr) {
729
+ return Promise.reject(res)
730
+ }
731
+ return res
658
732
  }
659
733
 
660
734
 
661
735
  async function _delGfs(bid, bucket) {
736
+ let isErr = false
662
737
 
663
- //pm
664
- let pm = genPm()
738
+ //res
739
+ let res = null
740
+ try {
665
741
 
666
- //delete
667
- bucket.delete(bid, function(err) {
668
- if (err) {
669
- pm.reject(err)
670
- }
671
- else {
672
- pm.resolve({
673
- n: 1,
674
- nDeleted: 1,
675
- ok: 1,
676
- })
742
+ //delete
743
+ res = await bucket.delete(bid)
744
+
745
+ //res
746
+ res = {
747
+ n: 1,
748
+ nDeleted: 1,
749
+ ok: 1,
677
750
  }
678
- })
679
751
 
680
- return pm
752
+ }
753
+ catch (err) {
754
+ isErr = true
755
+ res = err
756
+ }
757
+ finally {
758
+ // await client.close()
759
+ }
760
+
761
+ if (isErr) {
762
+ return Promise.reject(res)
763
+ }
764
+ return res
681
765
  }
682
766
 
683
767
 
@@ -689,54 +773,62 @@ function WOrmMongodb(opt = {}) {
689
773
  * @returns {Promise} 回傳Promise,resolve回傳刪除結果,reject回傳錯誤訊息
690
774
  */
691
775
  async function delAllGfs(find = {}) {
692
-
693
- //pm
694
- let pm = genPm()
776
+ let isErr = false
695
777
 
696
778
  //client
697
- let client = await MongoClient.connect(opt.url, optMGConn)
779
+ // let client = await MongoClient.connect(opt.url, optMGConn)
780
+ let client = new MongoClient(opt.url, optMGConn)
698
781
 
699
- //database, collection
700
- let database = client.db(opt.db)
782
+ //res
783
+ let res = null
784
+ try {
701
785
 
702
- //bucket
703
- let bucket = new mongodb.GridFSBucket(database, {
704
- chunkSizeBytes: 10 * 1024 * 1024, //10mb
705
- bucketName: opt.cl
706
- })
786
+ //database, collection
787
+ let database = client.db(opt.db)
707
788
 
708
- //_findGfs
709
- let res = await _findGfs(find, bucket)
789
+ //bucket
790
+ let bucket = new mongodb.GridFSBucket(database, {
791
+ chunkSizeBytes: 10 * 1024 * 1024, //10mb
792
+ bucketName: opt.cl
793
+ })
710
794
 
711
- //n
712
- let n = size(res)
795
+ //_findGfs
796
+ res = await _findGfs(find, bucket)
713
797
 
714
- //ps
715
- let ps = map(res, function(v) {
716
- let bid = v._id
717
- return _delGfs(bid, bucket)
718
- })
798
+ //n
799
+ let n = size(res)
719
800
 
720
- //all
721
- Promise.all(ps)
722
- .then(function(msg) {
723
- let res = { n, ok: 1 }
801
+ //ps
802
+ let ps = map(res, function(v) {
803
+ let bid = v._id
804
+ return _delGfs(bid, bucket)
805
+ })
724
806
 
725
- //resolve
726
- pm.resolve(res)
807
+ //all
808
+ res = await Promise.all(ps)
727
809
 
728
- //emit
729
- ee.emit('change', 'delAllGfs', null, res)
810
+ //res
811
+ res = {
812
+ n,
813
+ ok: 1
814
+ }
730
815
 
731
- })
732
- .catch(function(msg) {
733
- pm.reject(msg)
734
- })
735
- .finally(function() {
736
- client.close()
737
- })
816
+ //emit
817
+ ee.emit('change', 'delAllGfs', null, res)
738
818
 
739
- return pm
819
+ }
820
+ catch (err) {
821
+ isErr = true
822
+ res = err
823
+ }
824
+ finally {
825
+ await client.close()
826
+ }
827
+
828
+ if (isErr) {
829
+ return Promise.reject(res)
830
+ }
831
+ return res
740
832
  }
741
833
 
742
834
 
@@ -771,7 +863,7 @@ export default WOrmMongodb
771
863
  <br class="clear">
772
864
 
773
865
  <footer>
774
- Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.6.10</a> on Thu Jan 19 2023 14:38:10 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
866
+ Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.2</a> on Thu Mar 30 2023 11:53:34 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
775
867
  </footer>
776
868
 
777
869
  <script>prettyPrint();</script>