w-orm-reladb 1.0.48 → 1.0.49
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 +20 -0
- package/dist/w-orm-reladb.umd.js +2 -2
- package/dist/w-orm-reladb.umd.js.map +1 -1
- package/docs/WOrmReladb.html +60 -16
- package/docs/WOrmReladb.mjs.html +139 -19
- package/docs/index.html +1 -1
- package/package.json +1 -1
- package/src/WOrmReladb.mjs +138 -18
- package/test/api-suite.mjs +145 -0
- package/toolg/gDistRollup.mjs +1 -0
package/docs/WOrmReladb.html
CHANGED
|
@@ -750,7 +750,7 @@
|
|
|
750
750
|
|
|
751
751
|
<dt class="tag-source">Source:</dt>
|
|
752
752
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
753
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
753
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line443">line 443</a>
|
|
754
754
|
</li></ul></dd>
|
|
755
755
|
|
|
756
756
|
|
|
@@ -858,7 +858,7 @@
|
|
|
858
858
|
|
|
859
859
|
<dt class="tag-source">Source:</dt>
|
|
860
860
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
861
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
861
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line1618">line 1618</a>
|
|
862
862
|
</li></ul></dd>
|
|
863
863
|
|
|
864
864
|
|
|
@@ -971,7 +971,7 @@
|
|
|
971
971
|
|
|
972
972
|
<dt class="tag-source">Source:</dt>
|
|
973
973
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
974
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
974
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line1359">line 1359</a>
|
|
975
975
|
</li></ul></dd>
|
|
976
976
|
|
|
977
977
|
|
|
@@ -1300,7 +1300,7 @@
|
|
|
1300
1300
|
|
|
1301
1301
|
<dt class="tag-source">Source:</dt>
|
|
1302
1302
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
1303
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
1303
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line1522">line 1522</a>
|
|
1304
1304
|
</li></ul></dd>
|
|
1305
1305
|
|
|
1306
1306
|
|
|
@@ -1630,7 +1630,7 @@
|
|
|
1630
1630
|
|
|
1631
1631
|
<dt class="tag-source">Source:</dt>
|
|
1632
1632
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
1633
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
1633
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line1660">line 1660</a>
|
|
1634
1634
|
</li></ul></dd>
|
|
1635
1635
|
|
|
1636
1636
|
|
|
@@ -2158,7 +2158,7 @@
|
|
|
2158
2158
|
|
|
2159
2159
|
<dt class="tag-source">Source:</dt>
|
|
2160
2160
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
2161
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
2161
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line1708">line 1708</a>
|
|
2162
2162
|
</li></ul></dd>
|
|
2163
2163
|
|
|
2164
2164
|
|
|
@@ -2463,7 +2463,7 @@
|
|
|
2463
2463
|
|
|
2464
2464
|
<dt class="tag-source">Source:</dt>
|
|
2465
2465
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
2466
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
2466
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line459">line 459</a>
|
|
2467
2467
|
</li></ul></dd>
|
|
2468
2468
|
|
|
2469
2469
|
|
|
@@ -2571,7 +2571,7 @@
|
|
|
2571
2571
|
|
|
2572
2572
|
<dt class="tag-source">Source:</dt>
|
|
2573
2573
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
2574
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
2574
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line376">line 376</a>
|
|
2575
2575
|
</li></ul></dd>
|
|
2576
2576
|
|
|
2577
2577
|
|
|
@@ -2747,13 +2747,17 @@
|
|
|
2747
2747
|
<p>由資料庫於主鍵之唯一約束上原子完成[檢查主鍵不存在]與[寫入],併發時同一主鍵僅有一次成功</p>
|
|
2748
2748
|
<p>註: n為輸入筆數即本次嘗試插入之基準,nInserted為實際插入筆數,全數已存在而nInserted為0屬正常結果
|
|
2749
2749
|
註: 同批含重複主鍵時僅首筆計入nInserted,其餘視為已存在
|
|
2750
|
-
註: opt.autoGenPk為true(預設)時未帶有效主鍵者自動產生,為false時未帶有效主鍵即reject
|
|
2750
|
+
註: opt.autoGenPk為true(預設)時未帶有效主鍵者自動產生,為false時未帶有效主鍵即reject且同批皆不寫入
|
|
2751
|
+
註: option.returnList開啟時改回與輸入等長且保序之逐筆結果陣列[{n,nInserted,ok}],
|
|
2752
|
+
聚合計數只答得出[有幾筆是新的]而答不出[是哪幾筆],而後者正是去重之產出物;
|
|
2753
|
+
逐筆元素之n與ok恆為1,資訊由nInserted承載,不變式為
|
|
2754
|
+
陣列長度等於輸入筆數且filter(v => v.nInserted === 1).length等於聚合模式之nInserted</p></li></ul></dd>
|
|
2751
2755
|
|
|
2752
2756
|
|
|
2753
2757
|
|
|
2754
2758
|
<dt class="tag-source">Source:</dt>
|
|
2755
2759
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
2756
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
2760
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line752">line 752</a>
|
|
2757
2761
|
</li></ul></dd>
|
|
2758
2762
|
|
|
2759
2763
|
|
|
@@ -3008,6 +3012,46 @@
|
|
|
3008
3012
|
</tr>
|
|
3009
3013
|
|
|
3010
3014
|
|
|
3015
|
+
|
|
3016
|
+
<tr>
|
|
3017
|
+
|
|
3018
|
+
<td class="name"><code>returnList</code></td>
|
|
3019
|
+
|
|
3020
|
+
|
|
3021
|
+
<td class="type">
|
|
3022
|
+
|
|
3023
|
+
|
|
3024
|
+
<span class="param-type">Boolean</span>
|
|
3025
|
+
|
|
3026
|
+
|
|
3027
|
+
|
|
3028
|
+
|
|
3029
|
+
</td>
|
|
3030
|
+
|
|
3031
|
+
|
|
3032
|
+
<td class="attributes">
|
|
3033
|
+
|
|
3034
|
+
<optional><br>
|
|
3035
|
+
|
|
3036
|
+
|
|
3037
|
+
|
|
3038
|
+
|
|
3039
|
+
|
|
3040
|
+
</td>
|
|
3041
|
+
|
|
3042
|
+
|
|
3043
|
+
|
|
3044
|
+
<td class="default">
|
|
3045
|
+
|
|
3046
|
+
<code>false</code>
|
|
3047
|
+
|
|
3048
|
+
</td>
|
|
3049
|
+
|
|
3050
|
+
|
|
3051
|
+
<td class="description last"><p>輸入是否改回逐筆結果陣列布林值,預設false</p></td>
|
|
3052
|
+
</tr>
|
|
3053
|
+
|
|
3054
|
+
|
|
3011
3055
|
</tbody>
|
|
3012
3056
|
</table>
|
|
3013
3057
|
|
|
@@ -3037,7 +3081,7 @@
|
|
|
3037
3081
|
|
|
3038
3082
|
|
|
3039
3083
|
<div class="param-desc">
|
|
3040
|
-
<p>回傳Promise,resolve回傳插入結果{n,nInserted,ok},reject回傳錯誤訊息</p>
|
|
3084
|
+
<p>回傳Promise,resolve回傳插入結果{n,nInserted,ok},或於returnList開啟時回傳[{n,nInserted,ok}],reject回傳錯誤訊息</p>
|
|
3041
3085
|
</div>
|
|
3042
3086
|
|
|
3043
3087
|
|
|
@@ -3091,7 +3135,7 @@ mssql因綁定參數數量上限會由驅動層自動拆為多語句送出,實
|
|
|
3091
3135
|
|
|
3092
3136
|
<dt class="tag-source">Source:</dt>
|
|
3093
3137
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
3094
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
3138
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line922">line 922</a>
|
|
3095
3139
|
</li></ul></dd>
|
|
3096
3140
|
|
|
3097
3141
|
|
|
@@ -3424,7 +3468,7 @@ mssql因綁定參數數量上限會由驅動層自動拆為多語句送出,實
|
|
|
3424
3468
|
|
|
3425
3469
|
<dt class="tag-source">Source:</dt>
|
|
3426
3470
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
3427
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
3471
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line1249">line 1249</a>
|
|
3428
3472
|
</li></ul></dd>
|
|
3429
3473
|
|
|
3430
3474
|
|
|
@@ -3791,7 +3835,7 @@ mssql因綁定參數數量上限會由驅動層自動拆為多語句送出,實
|
|
|
3791
3835
|
|
|
3792
3836
|
<dt class="tag-source">Source:</dt>
|
|
3793
3837
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
3794
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
3838
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line484">line 484</a>
|
|
3795
3839
|
</li></ul></dd>
|
|
3796
3840
|
|
|
3797
3841
|
|
|
@@ -4122,7 +4166,7 @@ mssql因綁定參數數量上限會由驅動層自動拆為多語句送出,實
|
|
|
4122
4166
|
|
|
4123
4167
|
<dt class="tag-source">Source:</dt>
|
|
4124
4168
|
<dd class="tag-source"><ul class="dummy"><li>
|
|
4125
|
-
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#
|
|
4169
|
+
<a href="WOrmReladb.mjs.html">WOrmReladb.mjs</a>, <a href="WOrmReladb.mjs.html#line634">line 634</a>
|
|
4126
4170
|
</li></ul></dd>
|
|
4127
4171
|
|
|
4128
4172
|
|
|
@@ -4448,7 +4492,7 @@ mssql因綁定參數數量上限會由驅動層自動拆為多語句送出,實
|
|
|
4448
4492
|
<br class="clear">
|
|
4449
4493
|
|
|
4450
4494
|
<footer>
|
|
4451
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Aug 17 2026 12:
|
|
4495
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Aug 17 2026 19:12:32 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
4452
4496
|
</footer>
|
|
4453
4497
|
|
|
4454
4498
|
<script>prettyPrint();</script>
|
package/docs/WOrmReladb.mjs.html
CHANGED
|
@@ -307,6 +307,66 @@ function WOrmReladb(opt = {}) {
|
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
|
|
310
|
+
/**
|
|
311
|
+
* 檢查呼叫端所給之實例是否已關閉,已關閉者拋出令各函數於入口快速失敗
|
|
312
|
+
* 註: 實例已關閉為終態,後續操作必然失敗,屬影響全部數據之整批性錯誤,
|
|
313
|
+
* 故不得降為逐筆ok為0而整批resolve,亦不得以正常空結果(null、未命中、空陣列)回應——
|
|
314
|
+
* 後者使[已關閉]與[查無資料]同形,去重類呼叫端將把每筆判為未存在而靜默fail-open
|
|
315
|
+
* 註: closeSequelize於關閉後將sequelize設為null,故據此判定即為精確訊號,
|
|
316
|
+
* 不須倚賴驅動層之錯誤訊息比對(連線管理器關閉後所拋者為原生Error而非sequelize之錯誤類別)
|
|
317
|
+
* 註: 內部自行初始化者(instance為null)每次呼叫各自開關連線,不受本檢查影響
|
|
318
|
+
*
|
|
319
|
+
* @ignore
|
|
320
|
+
* @param {Object|null} instance 輸入呼叫端所給之實例物件
|
|
321
|
+
* @returns {undefined} 無回傳值
|
|
322
|
+
*/
|
|
323
|
+
function procClosed(instance) {
|
|
324
|
+
|
|
325
|
+
//check
|
|
326
|
+
if (instance === null) {
|
|
327
|
+
return
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
//check
|
|
331
|
+
if (sequelize === null) {
|
|
332
|
+
throw new Error(`instance is closed, need to use init() to get a new instance`)
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
/**
|
|
339
|
+
* 判定錯誤是否影響後續所有筆數而應視為整批性錯誤
|
|
340
|
+
* 註: 依T4之判別原則,錯誤只影響該筆資料者為逐筆失敗,影響後續所有筆數者為整批性錯誤;
|
|
341
|
+
* 連線層錯誤屬後者,故於逐筆函數內攔得時須往外拋而不得降為該筆ok為0
|
|
342
|
+
* 註: 連線管理器關閉後所拋者為原生Error而非sequelize之ConnectionError,故另以訊息辨識
|
|
343
|
+
*
|
|
344
|
+
* @ignore
|
|
345
|
+
* @param {Error} err 輸入錯誤物件
|
|
346
|
+
* @returns {Boolean} 回傳是否為整批性錯誤布林值
|
|
347
|
+
*/
|
|
348
|
+
function isBatchLevelError(err) {
|
|
349
|
+
|
|
350
|
+
//check, sequelize之連線層錯誤家族
|
|
351
|
+
if (err instanceof Sequelize.ConnectionError) {
|
|
352
|
+
return true
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
//msg
|
|
356
|
+
let msg = getErrMsg(err)
|
|
357
|
+
|
|
358
|
+
//check
|
|
359
|
+
if (msg.indexOf('connection manager was closed') >= 0) {
|
|
360
|
+
return true
|
|
361
|
+
}
|
|
362
|
+
if (msg.indexOf('SQLITE_MISUSE') >= 0) {
|
|
363
|
+
return true
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
return false
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
|
|
310
370
|
/**
|
|
311
371
|
* 檢查並補齊單筆數據之主鍵
|
|
312
372
|
* autoGenPk為true時未帶有效主鍵者自動產生,為false時往外拋
|
|
@@ -620,17 +680,26 @@ function WOrmReladb(opt = {}) {
|
|
|
620
680
|
*/
|
|
621
681
|
async function selectByPk(pk, option = {}) {
|
|
622
682
|
|
|
623
|
-
//check, 未給有效主鍵值視為查無數據, 不送查詢以免無效值被轉為null而誤中其他數據
|
|
624
|
-
if (!isEffPk(pk)) {
|
|
625
|
-
return null
|
|
626
|
-
}
|
|
627
|
-
|
|
628
683
|
//instance
|
|
629
684
|
let instance = get(option, 'instance', null)
|
|
630
685
|
|
|
631
686
|
//transaction
|
|
632
687
|
let transaction = get(option, 'transaction', null)
|
|
633
688
|
|
|
689
|
+
//check, 實例已關閉之判定須先於[主鍵值無效回null], 否則兩者同形而使[已關閉]被誤讀為[查無資料]
|
|
690
|
+
try {
|
|
691
|
+
procClosed(instance)
|
|
692
|
+
}
|
|
693
|
+
catch (err) {
|
|
694
|
+
emitError('selectByPk', null, err)
|
|
695
|
+
return Promise.reject(err)
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
//check, 未給有效主鍵值視為查無數據, 不送查詢以免無效值被轉為null而誤中其他數據
|
|
699
|
+
if (!isEffPk(pk)) {
|
|
700
|
+
return null
|
|
701
|
+
}
|
|
702
|
+
|
|
634
703
|
//check
|
|
635
704
|
if (opt.useEncryption && dialect === 'sqlite') {
|
|
636
705
|
if (transaction !== null) {
|
|
@@ -650,6 +719,9 @@ function WOrmReladb(opt = {}) {
|
|
|
650
719
|
|
|
651
720
|
try {
|
|
652
721
|
|
|
722
|
+
//check, 實例已關閉屬整批性錯誤, 於入口快速失敗
|
|
723
|
+
procClosed(instance)
|
|
724
|
+
|
|
653
725
|
//check
|
|
654
726
|
if (si.err) {
|
|
655
727
|
throw si.err
|
|
@@ -711,18 +783,29 @@ function WOrmReladb(opt = {}) {
|
|
|
711
783
|
* 註: n為輸入筆數即本次嘗試插入之基準,nInserted為實際插入筆數,全數已存在而nInserted為0屬正常結果
|
|
712
784
|
* 註: 同批含重複主鍵時僅首筆計入nInserted,其餘視為已存在
|
|
713
785
|
* 註: opt.autoGenPk為true(預設)時未帶有效主鍵者自動產生,為false時未帶有效主鍵即reject且同批皆不寫入
|
|
786
|
+
* 註: option.returnList開啟時改回與輸入等長且保序之逐筆結果陣列[{n,nInserted,ok}],
|
|
787
|
+
* 聚合計數只答得出[有幾筆是新的]而答不出[是哪幾筆],而後者正是去重之產出物;
|
|
788
|
+
* 逐筆元素之n與ok恆為1,資訊由nInserted承載,不變式為
|
|
789
|
+
* 陣列長度等於輸入筆數且filter(v => v.nInserted === 1).length等於聚合模式之nInserted
|
|
714
790
|
*
|
|
715
791
|
* @memberOf WOrmReladb
|
|
716
792
|
* @param {Object|Array} data 輸入數據物件或陣列
|
|
717
793
|
* @param {Object} [option={}] 輸入設定物件,預設為{}
|
|
718
794
|
* @param {Object} [option.instance=null] 輸入實例instance物件,預設為null
|
|
719
795
|
* @param {Object} [option.transaction=null] 輸入交易(transaction)物件,預設為null
|
|
720
|
-
* @
|
|
796
|
+
* @param {Boolean} [option.returnList=false] 輸入是否改回逐筆結果陣列布林值,預設false
|
|
797
|
+
* @returns {Promise} 回傳Promise,resolve回傳插入結果{n,nInserted,ok},或於returnList開啟時回傳[{n,nInserted,ok}],reject回傳錯誤訊息
|
|
721
798
|
*/
|
|
722
799
|
async function insert(data, option = {}) {
|
|
723
800
|
|
|
801
|
+
//returnList, 回傳形式之切換為靜態, 僅由本選項之取值決定, 不因數據內容或執行結果而變
|
|
802
|
+
let returnList = get(option, 'returnList', false) === true
|
|
803
|
+
|
|
724
804
|
//check
|
|
725
805
|
if (!iseobj(data) && !isearr(data)) {
|
|
806
|
+
if (returnList) {
|
|
807
|
+
return []
|
|
808
|
+
}
|
|
726
809
|
return {
|
|
727
810
|
n: 0,
|
|
728
811
|
nInserted: 0,
|
|
@@ -758,6 +841,9 @@ function WOrmReladb(opt = {}) {
|
|
|
758
841
|
|
|
759
842
|
try {
|
|
760
843
|
|
|
844
|
+
//check, 實例已關閉屬整批性錯誤, 於入口快速失敗
|
|
845
|
+
procClosed(instance)
|
|
846
|
+
|
|
761
847
|
//check
|
|
762
848
|
if (si.err) {
|
|
763
849
|
throw si.err
|
|
@@ -788,8 +874,8 @@ function WOrmReladb(opt = {}) {
|
|
|
788
874
|
//create, 逐筆插入以取得精確之nInserted
|
|
789
875
|
//註: 不採bulkCreate配合ignoreDuplicates, 因mssql未宣告該能力而選項會被靜默忽略仍撞唯一約束,
|
|
790
876
|
//且bulkCreate無從回報實際插入筆數; 單筆INSERT本即由主鍵之唯一約束原子完成檢查與寫入
|
|
791
|
-
|
|
792
|
-
await pmSeries(data, async(v) => {
|
|
877
|
+
//註: bIns即逐筆判定, 與輸入等長且保序, 供returnList直接包裝而不須另行推導
|
|
878
|
+
let bInss = await pmSeries(data, async(v) => {
|
|
793
879
|
|
|
794
880
|
//bIns, 撞既有主鍵者視為已存在而跳過, 其餘錯誤影響全部數據須往外拋
|
|
795
881
|
let bIns = await md.create(v, setting)
|
|
@@ -803,19 +889,31 @@ function WOrmReladb(opt = {}) {
|
|
|
803
889
|
throw err
|
|
804
890
|
})
|
|
805
891
|
|
|
806
|
-
//nInserted
|
|
807
|
-
if (bIns) {
|
|
808
|
-
nInserted += 1
|
|
809
|
-
}
|
|
810
|
-
|
|
811
892
|
return bIns
|
|
812
893
|
})
|
|
813
894
|
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
n
|
|
817
|
-
nInserted
|
|
818
|
-
|
|
895
|
+
if (returnList) {
|
|
896
|
+
|
|
897
|
+
//res, 與輸入等長且保序之逐筆結果; 各筆之n恆為1(該筆主鍵或為命中既有或經插入而產生),
|
|
898
|
+
//ok恆為1(insert之任何錯誤皆屬整批性錯誤而reject), 資訊由nInserted承載
|
|
899
|
+
res = map(bInss, (bIns) => {
|
|
900
|
+
return {
|
|
901
|
+
n: 1,
|
|
902
|
+
nInserted: bIns ? 1 : 0,
|
|
903
|
+
ok: 1,
|
|
904
|
+
}
|
|
905
|
+
})
|
|
906
|
+
|
|
907
|
+
}
|
|
908
|
+
else {
|
|
909
|
+
|
|
910
|
+
//res, 全數已存在而nInserted為0屬正常結果, 不視為錯誤
|
|
911
|
+
res = {
|
|
912
|
+
n: nAll,
|
|
913
|
+
nInserted: size(bInss.filter((v) => v === true)),
|
|
914
|
+
ok: 1,
|
|
915
|
+
}
|
|
916
|
+
|
|
819
917
|
}
|
|
820
918
|
|
|
821
919
|
}
|
|
@@ -907,6 +1005,9 @@ function WOrmReladb(opt = {}) {
|
|
|
907
1005
|
|
|
908
1006
|
try {
|
|
909
1007
|
|
|
1008
|
+
//check, 實例已關閉屬整批性錯誤, 於入口快速失敗
|
|
1009
|
+
procClosed(instance)
|
|
1010
|
+
|
|
910
1011
|
//check
|
|
911
1012
|
if (si.err) {
|
|
912
1013
|
throw si.err
|
|
@@ -1133,6 +1234,11 @@ function WOrmReladb(opt = {}) {
|
|
|
1133
1234
|
}
|
|
1134
1235
|
catch (err) {
|
|
1135
1236
|
|
|
1237
|
+
//check, 連線層錯誤影響後續所有筆數, 依T4屬整批性錯誤, 往外拋而不降為本筆ok為0
|
|
1238
|
+
if (isBatchLevelError(err)) {
|
|
1239
|
+
throw err
|
|
1240
|
+
}
|
|
1241
|
+
|
|
1136
1242
|
//其餘錯誤視為本筆失敗, 不中斷整批, 由呼叫端以ok與err判讀
|
|
1137
1243
|
rest = {
|
|
1138
1244
|
n: 1,
|
|
@@ -1225,6 +1331,9 @@ function WOrmReladb(opt = {}) {
|
|
|
1225
1331
|
|
|
1226
1332
|
try {
|
|
1227
1333
|
|
|
1334
|
+
//check, 實例已關閉屬整批性錯誤, 於入口快速失敗
|
|
1335
|
+
procClosed(instance)
|
|
1336
|
+
|
|
1228
1337
|
//check
|
|
1229
1338
|
if (si.err) {
|
|
1230
1339
|
throw si.err
|
|
@@ -1329,6 +1438,9 @@ function WOrmReladb(opt = {}) {
|
|
|
1329
1438
|
|
|
1330
1439
|
try {
|
|
1331
1440
|
|
|
1441
|
+
//check, 實例已關閉屬整批性錯誤, 於入口快速失敗
|
|
1442
|
+
procClosed(instance)
|
|
1443
|
+
|
|
1332
1444
|
//check
|
|
1333
1445
|
if (si.err) {
|
|
1334
1446
|
throw si.err
|
|
@@ -1393,6 +1505,11 @@ function WOrmReladb(opt = {}) {
|
|
|
1393
1505
|
})
|
|
1394
1506
|
.catch((err) => {
|
|
1395
1507
|
|
|
1508
|
+
//check, 連線層錯誤影響後續所有筆數, 依T4屬整批性錯誤, 往外拋而不降為本筆ok為0
|
|
1509
|
+
if (isBatchLevelError(err)) {
|
|
1510
|
+
throw err
|
|
1511
|
+
}
|
|
1512
|
+
|
|
1396
1513
|
//rest, 本筆失敗不中斷整批
|
|
1397
1514
|
rest = {
|
|
1398
1515
|
n: 1,
|
|
@@ -1482,6 +1599,9 @@ function WOrmReladb(opt = {}) {
|
|
|
1482
1599
|
|
|
1483
1600
|
try {
|
|
1484
1601
|
|
|
1602
|
+
//check, 實例已關閉屬整批性錯誤, 於入口快速失敗
|
|
1603
|
+
procClosed(instance)
|
|
1604
|
+
|
|
1485
1605
|
//check
|
|
1486
1606
|
if (si.err) {
|
|
1487
1607
|
throw si.err
|
|
@@ -1702,7 +1822,7 @@ export default WOrmReladb
|
|
|
1702
1822
|
<br class="clear">
|
|
1703
1823
|
|
|
1704
1824
|
<footer>
|
|
1705
|
-
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Aug 17 2026 12:
|
|
1825
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Aug 17 2026 19:12:32 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
1706
1826
|
</footer>
|
|
1707
1827
|
|
|
1708
1828
|
<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.5</a> on Mon Aug 17 2026 12:
|
|
74
|
+
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 4.0.5</a> on Mon Aug 17 2026 19:12:32 GMT+0800 (台北標準時間) using the <a href="https://github.com/clenemt/docdash">docdash</a> theme.
|
|
75
75
|
</footer>
|
|
76
76
|
|
|
77
77
|
<script>prettyPrint();</script>
|