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