new WOrmLmdb(optopt) → {Object}
- Description:
操作資料庫(LMDB)
回傳物件為EventEmitter,除各操作函數外另發出change與error兩事件,供呼叫端於單一處集中觀察資料異動與失敗。 事件僅為附加通知,其所送出之資訊皆另有正規管道(操作結果經resolve、整批性錯誤經reject、逐筆失敗經該筆之err欄位), 故不監聽亦能取得完整資訊,且監聽與否不改變任何操作之回傳值。
change事件,參數為(mode, data, res),於資料實際異動成功後發出: mode為操作別字串,可為'insert'、'insertBulk'、'save'、'del'、'delAll';save內若逐筆走自動插入則該筆另發出mode為'insert'之事件。 data為本次操作之輸入數據,delAll固定為null。 res為本次操作之回傳結果。 逐筆函數以整批為單位發出一次而不逐筆發出,select與selectByPk不發出本事件。
error事件,參數為(mode, data, err),於操作發生錯誤時發出: mode為操作別字串,可為'select'、'selectByPk'、'insert'、'insertBulk'、'save'、'del'、'delAll'。 data為本次操作之輸入數據,無輸入數據者為null。 err為錯誤訊息字串,內容與正規管道所送出者一致。 整批性錯誤於reject之前發出;逐筆失敗於該筆結果定案後發出,每筆一次。 註: 逐筆失敗時整批仍resolve,故收到本事件不表示該次呼叫失敗;正常結果(如查無數據、主鍵未命中、全數已存在)不發出本事件。
- Source:
Parameters:
| Name | Type | Attributes | Default | Description | ||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
opt |
Object |
<optional> |
{}
|
輸入設定物件,預設{} Properties
|
Returns:
回傳操作資料庫物件,各事件功能詳見說明
- Type
- Object
Methods
(async, static) del(data) → {Promise}
- Description:
刪除數據
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
data |
Object | Array | 輸入數據物件或陣列 |
Returns:
回傳Promise,resolve回傳與輸入等長之刪除結果陣列,各筆為{n,nDeleted,ok},n為主鍵命中筆數,單筆失敗或未給有效id者ok為0並附err,reject回傳錯誤訊息
- Type
- Promise
(async, static) delAll(findopt) → {Promise}
- Description:
刪除全部數據,需與del分開,避免未傳數據導致直接刪除全表
- Source:
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
find |
Object |
<optional> |
{}
|
輸入刪除條件物件 |
Returns:
回傳Promise,resolve回傳刪除結果物件{n,nDeleted,ok},n與nDeleted同為實際刪除筆數,reject回傳錯誤訊息
- Type
- Promise
(async, static) insert(data, optionopt) → {Promise}
- Description:
插入數據
- Source:
Parameters:
| Name | Type | Attributes | Default | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
data |
Object | Array | 輸入數據物件或陣列 |
||||||||||||
option |
Object |
<optional> |
{}
|
輸入設定物件,預設為{} Properties
|
Returns:
回傳Promise,resolve依returnList回傳插入結果:預設回傳聚合物件{n,nInserted,ok},n為輸入筆數、nInserted為實際插入筆數;returnList為true時回傳逐筆陣列,各筆n恆為1(主鍵命中或經插入)、ok恆為1(insert之錯誤皆屬整批性而reject,不進逐筆);reject回傳錯誤訊息
- Type
- Promise
(async, static) insertBulk(data) → {Promise}
- Description:
批次插入數據,全批視為一個單位,全部插入成功或一筆都不寫入 註: 本函數非insert之加速版,兩者衝突政策不同。insert於主鍵已存在時跳過該筆而整批ok為1, 本函數則整批reject且不寫入任何一筆;同批含重複主鍵者亦視為衝突。確無衝突時兩者結果相同 註: 於本套件不會較insert快,因insert本即以Promise.all一次送出全部條件寫入而非逐筆await, 提供本函數係為與其他w-orm系列套件維持同一組函數,令呼叫端得於各套件間替換而不須改寫呼叫
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
data |
Object | Array | 輸入數據物件或陣列 |
Returns:
回傳Promise,resolve回傳插入結果物件{n,nInserted,ok},n為輸入筆數、nInserted成功時恆等於n,任一筆主鍵已存在則reject回傳錯誤訊息
- Type
- Promise
(async, static) save(data, optionopt) → {Promise}
- Description:
儲存數據
- Source:
Parameters:
| Name | Type | Attributes | Default | Description | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
data |
Object | Array | 輸入數據物件或陣列 |
||||||||||||
option |
Object |
<optional> |
{}
|
輸入設定物件,預設為{} Properties
|
Returns:
回傳Promise,resolve回傳與輸入等長之儲存結果陣列,各筆為{n,nInserted,nModified,ok},n為主鍵命中筆數,單筆失敗者ok為0並附err,reject回傳錯誤訊息
- Type
- Promise
(async, static) select(findopt) → {Promise}
- Description:
查詢數據
- Source:
Parameters:
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
find |
Object |
<optional> |
{}
|
輸入查詢條件物件 |
Returns:
回傳Promise,resolve回傳數據,reject回傳錯誤訊息
- Type
- Promise
(async, static) selectByPk(pk) → {Promise}
- Description:
由主鍵查詢單筆數據,因直接由LMDB取值,不需如select提取全表數據再過濾,故數據量大時效能較佳 註: 本套件之主鍵欄位固定為id,尚未支援指定其他欄位為主鍵
- Source:
Parameters:
| Name | Type | Description |
|---|---|---|
pk |
String | 輸入主鍵值字串,本套件之主鍵欄位為id |
Returns:
回傳Promise,resolve回傳數據物件,若無此主鍵則回傳null,reject回傳錯誤訊息
- Type
- Promise