แทนที่ด้วย classic-level โปรดดูคำถามที่พบบ่อย
db = leveldown(location)db.open([options, ]callback)optionsdb.close(callback)db.put(key, value[, options], callback)optionsdb.get(key[, options], callback)optionsdb.getMany(keys[, options][, callback])db.del(key[, options], callback)optionsdb.batch(operations[, options], callback) (แบบฟอร์มอาร์เรย์)db.batch() (รูปแบบที่ถูกล่ามโซ่)db.approximateSize(start, end, callback)db.compactRange(start, end, callback)db.getProperty(property)db.iterator([options])db.clear([options, ]callback)chainedBatchchainedBatch.put(key, value)chainedBatch.del(key)chainedBatch.clear()chainedBatch.write([options, ]callback)chainedBatch.dbiteratorfor await...of iteratoriterator.next([callback])iterator.seek(key)iterator.end([callback])iterator.dbleveldown.destroy(location, callback)leveldown.repair(location, callback) โมดูลนี้เป็นส่วนหนึ่งของ levelup แต่ถูกสกัดในภายหลังและตอนนี้ทำหน้าที่เป็นผลผูกพันแบบสแตนด์อโลนสำหรับ LevelDB
ขอแนะนำอย่างยิ่ง ให้คุณใช้ levelup ตามการตั้ง leveldown เว้นแต่คุณจะมีเหตุผลด้านประสิทธิภาพที่วัดได้ levelup ได้รับการปรับให้เหมาะสมสำหรับการใช้งานและความปลอดภัย แม้ว่าเรากำลังทำงานเพื่อปรับปรุงความปลอดภัยของอินเทอร์เฟซ leveldown แต่ก็ยังง่ายที่จะขัดข้องกระบวนการโหนดของคุณหากคุณไม่ทำสิ่งต่าง ๆ ในทางที่ถูกต้อง
ดูหัวข้อด้านความปลอดภัยด้านล่างสำหรับรายละเอียดของการดำเนินงานที่ไม่ปลอดภัยที่รู้จักกับ leveldown
เราตั้งเป้าหมายที่จะสนับสนุน LTS ที่ใช้งาน อย่างน้อย และ Node.js ปัจจุบัน Electron 5.0.0 รวมถึง Node.js และอิเล็กตรอนในอนาคตใด ๆ ด้วย N-API เวอร์ชันโหนดขั้นต่ำสำหรับ leveldown คือ 10.12.0 ในทางกลับกันสำหรับโหนด> = 12 รุ่น leveldown ต่ำสุดคือ 5.0.0
แพ็คเกจ NPM leveldown NPM มีพรีที่สร้างขึ้นล่วงหน้าสำหรับแพลตฟอร์ม 64 บิตยอดนิยมรวมถึง ARM, M1, Android และ Alpine (MUSL) และเป็นที่รู้จักกันในการทำงาน::
เมื่อติดตั้ง leveldown node-gyp-build จะตรวจสอบว่ามีไบนารีที่เข้ากันได้หรือไม่และทางเลือกกลับไปยังขั้นตอนการคอมไพล์หรือไม่ ในกรณีนี้คุณจะต้องมีการติดตั้ง node-gyp ที่ถูกต้อง
หากคุณไม่ต้องการใช้ไบนารี prebuilt สำหรับแพลตฟอร์มที่คุณกำลังติดตั้งให้ระบุสถานะ --build-from-source เมื่อคุณติดตั้ง หนึ่งใน:
npm install --build-from-source
npm install leveldown --build-from-source
หากคุณกำลังดำเนินการกับ leveldown เองและต้องการคอมไพล์รหัส C ++ อีกครั้งให้เรียกใช้ npm run rebuild
leveldown > = 5 สามารถตรวจสอบได้โดยเรียกใช้ npm ls leveldownleveldown เป็น> = 5.3.0 หรือใช้ --build-from-source--build-from-source นี่ไม่ใช่กรณีอีกต่อไปnodejs-mobile หากคุณกำลังอัพเกรด: โปรดดู UPGRADING.md
db = leveldown(location) ส่งคืน leveldown ซ์ระดับใหม่ location คือสตริงที่ชี้ไปที่ตำแหน่ง LEVELDB ที่จะเปิด
db.open([options, ]callback) เปิดร้าน ฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์เมื่อเปิดฐานข้อมูลสำเร็จหรือมีอาร์กิวเมนต์ข้อ error เดียวหากการดำเนินการเปิดล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม
options อาร์กิวเมนต์ options ทางเลือกอาจมี:
createIfMissing (บูลีน, ค่าเริ่มต้น: true ): ถ้า true จะเริ่มต้นฐานข้อมูลว่างที่ตำแหน่งที่ระบุหากไม่มีอยู่แล้ว หากไม่มี false และฐานข้อมูลคุณจะได้รับข้อผิดพลาดในการโทรกลับ open() และฐานข้อมูลของคุณจะไม่เปิด
errorIfExists (บูลีน, ค่าเริ่มต้น: false ): ถ้า true คุณจะได้รับข้อผิดพลาดในการโทรกลับ open() ของคุณหากฐานข้อมูลมีอยู่ที่ตำแหน่งที่ระบุ
compression (บูลีน, ค่าเริ่มต้น: true ): ถ้า true ข้อมูล ที่บีบอัด ทั้งหมดจะถูกเรียกใช้ผ่านอัลกอริทึมการบีบอัดเร็วก่อนที่จะถูกเก็บไว้ Snappy เร็วมากและไม่ควรได้รับความเร็วมากนักโดยการปิดการใช้งานดังนั้นปล่อยให้สิ่งนี้อยู่เว้นแต่คุณจะมีเหตุผลที่ดีที่จะปิด
cacheSize (หมายเลข, ค่าเริ่มต้น: 8 * 1024 * 1024 = 8MB): ขนาด (ในไบต์) ของแคช LRU ในหน่วยความจำที่มีเนื้อหาบล็อกที่ใช้บ่อย
ตัวเลือกขั้นสูง
ตัวเลือกต่อไปนี้สำหรับการปรับแต่งประสิทธิภาพขั้นสูง แก้ไขเฉพาะในกรณีที่คุณสามารถพิสูจน์ประโยชน์ที่แท้จริงสำหรับแอปพลิเคชันเฉพาะของคุณ
writeBufferSize (หมายเลข, ค่าเริ่มต้น: 4 * 1024 * 1024 = 4MB): ขนาดสูงสุด (ในไบต์) ของบันทึก (ในหน่วยความจำและเก็บไว้ในไฟล์. log บนดิสก์) นอกเหนือจากขนาดนี้ LevelDB จะแปลงข้อมูลบันทึกเป็นระดับแรกของไฟล์ตารางที่เรียงลำดับ จากเอกสาร LevelDB:ค่าที่มากขึ้นจะเพิ่มประสิทธิภาพโดยเฉพาะอย่างยิ่งในช่วงโหลดจำนวนมาก บัฟเฟอร์การเขียนถึงสองรายการอาจถูกเก็บไว้ในหน่วยความจำในเวลาเดียวกันดังนั้นคุณอาจต้องการปรับพารามิเตอร์นี้เพื่อควบคุมการใช้หน่วยความจำ นอกจากนี้บัฟเฟอร์การเขียนขนาดใหญ่จะส่งผลให้เกิดการกู้คืนนานขึ้นในครั้งต่อไปที่ฐานข้อมูลเปิดขึ้น
blockSize (หมายเลข, ค่าเริ่มต้น 4096 = 4K): ขนาด โดยประมาณ ของบล็อกที่ประกอบขึ้นเป็นไฟล์ตาราง ขนาดที่เกี่ยวข้องกับข้อมูลที่ไม่ได้บีบอัด (ดังนั้น "โดยประมาณ") บล็อกจะถูกจัดทำดัชนีในไฟล์ตารางและการเข้าชมรายการเกี่ยวข้องกับการอ่านบล็อกทั้งหมดและการแยกวิเคราะห์เพื่อค้นหารายการที่จำเป็น
maxOpenFiles (หมายเลข, ค่าเริ่มต้น: 1000 ): จำนวนสูงสุดของไฟล์ที่ LevelDB ได้รับอนุญาตให้เปิดทีละครั้ง หากที่เก็บข้อมูลของคุณมีแนวโน้มที่จะมีชุดทำงานขนาดใหญ่คุณอาจเพิ่มค่านี้เพื่อป้องกันการปั่นป่วนไฟล์ ในการคำนวณจำนวนไฟล์ที่จำเป็นสำหรับชุดการทำงานของคุณแบ่งข้อมูลทั้งหมดของคุณโดย 'maxFileSize'
blockRestartInterval (หมายเลข, ค่าเริ่มต้น: 16 ): จำนวนรายการก่อนที่จะรีสตาร์ท "การเข้ารหัสเดลต้า" ของปุ่มภายในบล็อก แต่ละจุด "รีสตาร์ท" จะจัดเก็บคีย์เต็มสำหรับรายการระหว่างรีสตาร์ทคำนำหน้าทั่วไปของคีย์สำหรับรายการเหล่านั้นจะถูกละไว้ รีสตาร์ทจะคล้ายกับแนวคิดของคีย์เฟรมในการเข้ารหัสวิดีโอและใช้เพื่อลดจำนวนพื้นที่ที่จำเป็นในการจัดเก็บคีย์ สิ่งนี้มีประโยชน์อย่างยิ่งเมื่อใช้การกำหนดเวลา / คำนำหน้าในคีย์ของคุณ
maxFileSize (หมายเลข, ค่าเริ่มต้น: 2* 1024 * 1024 = 2MB): จำนวนสูงสุดของไบต์ที่จะเขียนไปยังไฟล์ก่อนที่จะเปลี่ยนเป็นไฟล์ใหม่ จากเอกสาร LevelDB:
... หากระบบไฟล์ของคุณมีประสิทธิภาพมากขึ้นด้วยไฟล์ขนาดใหญ่คุณสามารถพิจารณาเพิ่มมูลค่า ข้อเสียคือการบดอัดนานขึ้นและด้วยเหตุนี้ความล่าช้า/ประสิทธิภาพที่ยาวนานขึ้น อีกเหตุผลหนึ่งในการเพิ่มพารามิเตอร์นี้อาจเป็นเมื่อคุณกำลังเติมฐานข้อมูลขนาดใหญ่ในขั้นต้น
db.close(callback) close() เป็นวิธีการอินสแตนซ์บนวัตถุฐานข้อมูลที่มีอยู่ ฐานข้อมูล LevelDB พื้นฐานจะถูกปิดและฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์หากการดำเนินการสำเร็จหรือมีอาร์กิวเมนต์ error เดียวหากการดำเนินการล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม
leveldown รอการดำเนินการใด ๆ ที่รอดำเนินการก่อนที่จะปิด ตัวอย่างเช่น:
db . put ( 'key' , 'value' , function ( err ) {
// This happens first
} )
db . close ( function ( err ) {
// This happens second
} )db.put(key, value[, options], callback)จัดเก็บรายการใหม่หรือเขียนทับรายการที่มีอยู่
วัตถุ key และ value อาจเป็นสตริงหรือบัฟเฟอร์ ประเภทวัตถุอื่น ๆ จะถูกแปลงเป็นสตริงด้วยวิธี toString() ปุ่มอาจไม่เป็น null หรือ undefined และวัตถุที่ถูกแปลงด้วย toString() ไม่ควรส่งผลให้เกิดการว่างเปล่า ค่าอาจไม่เป็น null หรือ undefined ค่าของ '' , [] และ Buffer.alloc(0) (และวัตถุใด ๆ ที่ส่งผลให้ toString() ของหนึ่งในสิ่งเหล่านี้) จะถูกเก็บไว้เป็นอาร์เรย์อักขระที่มีความยาวเป็นศูนย์และจะถูกเรียกคืนเป็นทั้ง '' หรือ Buffer.alloc(0) ขึ้นอยู่กับประเภทที่ร้องขอ
ชุดข้อมูลที่สมบูรณ์ยิ่งขึ้นนั้นได้รับการจัดเตรียมไว้ใน levelup
options คุณสมบัติเดียวที่มีอยู่ในปัจจุบันในวัตถุ options คือ sync (บูลีน, ค่าเริ่มต้น: false ) หากคุณให้ค่า sync ของ true ในวัตถุ options ของคุณ LevelDB จะทำการเขียนข้อมูลแบบซิงโครนัส แม้ว่าการดำเนินการจะเป็นแบบอะซิงโครนัสเท่าที่เกี่ยวข้องกับโหนด โดยปกติแล้ว LevelDB จะส่งผ่านข้อมูลไปยังระบบปฏิบัติการสำหรับการเขียนและส่งคืนทันทีอย่างไรก็ตามการเขียนแบบซิงโครนัสจะใช้ fsync() หรือเทียบเท่าดังนั้นการโทรกลับของคุณจะไม่ถูกเรียกใช้จนกว่าข้อมูลจะอยู่บนดิสก์จริง ระบบไฟล์แบบซิงโครนัสเขียนช้ากว่าการเขียนแบบอะซิงโครนัสอย่าง มีนัยสำคัญ แต่ถ้าคุณต้องการแน่ใจอย่างแน่นอนว่าข้อมูลถูกล้างแล้วคุณสามารถใช้ { sync: true }
ฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์หากการดำเนินการสำเร็จหรือมีอาร์กิวเมนต์ข้อ error เดียวหากการดำเนินการล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม
db.get(key[, options], callback) รับค่าจากร้านค้า LevelDB ตาม key
วัตถุ key อาจเป็นสตริงหรือบัฟเฟอร์และไม่สามารถ undefined หรือ null ประเภทวัตถุอื่น ๆ จะถูกแปลงเป็นสตริงด้วยวิธี toString() และสตริงผลลัพธ์ อาจไม่ เป็นศูนย์ความยาว ชุดข้อมูลที่สมบูรณ์ยิ่งขึ้นนั้นได้รับการจัดเตรียมไว้ใน levelup
ค่าที่ดึงผ่าน get() ที่ถูกเก็บไว้เป็นอาร์เรย์อักขระที่มีความยาวเป็นศูนย์ ( null , undefined , '' , [] , Buffer.alloc(0) ) จะกลับมาเป็น string- String ( '' ) หรือ Buffer.alloc(0) เมื่อถูกดึงด้วย asBuffer: true (ดูด้านล่าง)
options วัตถุ options ทางเลือกอาจมี:
asBuffer (บูลีน, ค่าเริ่มต้น: true ): ใช้เพื่อพิจารณาว่าจะส่งคืน value ของรายการเป็นสตริงหรือบัฟเฟอร์ โปรดทราบว่าการแปลงจากบัฟเฟอร์เป็นสตริงมีค่าใช้จ่ายดังนั้นหากคุณต้องการสตริง (และ value สามารถกลายเป็นสตริง UTF8 ได้อย่างถูกกฎหมาย) คุณควรดึงข้อมูลเป็น { asBuffer: false } แล้วคุณจะหลีกเลี่ยงค่าใช้จ่ายในการแปลงนี้fillCache (บูลีน, ค่าเริ่มต้น: true ): LevelDB จะเป็นค่าเริ่มต้นให้เติมแคช LRU ในหน่วยความจำด้วยข้อมูลจากการโทรเพื่อรับ การปิดใช้งานสิ่งนี้ทำได้โดยการตั้ง fillCache เป็น false ฟังก์ชั่น callback จะถูกเรียกด้วย error เดียวหากการดำเนินการล้มเหลวไม่ว่าจะด้วยเหตุผลใดก็ตามรวมถึงหากไม่พบคีย์ หากประสบความสำเร็จอาร์กิวเมนต์แรกจะเป็น null และอาร์กิวเมนต์ที่สองจะเป็น value เป็นสตริงหรือบัฟเฟอร์ขึ้นอยู่กับตัวเลือก asBuffer
db.getMany(keys[, options][, callback]) รับหลายค่าจากร้านค้าโดยอาร์เรย์ของ keys วัตถุ options ทางเลือกอาจมี asBuffer และ fillCache ตามที่อธิบายไว้ใน get()
ฟังก์ชั่น callback จะถูกเรียกพร้อม Error หากการดำเนินการล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม หากประสบความสำเร็จอาร์กิวเมนต์แรกจะเป็น null และอาร์กิวเมนต์ที่สองจะเป็นอาร์เรย์ของค่าที่มีลำดับเดียวกับ keys หากไม่พบคีย์ค่าที่เกี่ยวข้องจะ undefined
หากไม่มีการโทรกลับจะมีการส่งคืนสัญญา
db.del(key[, options], callback) ลบรายการ วัตถุ key อาจเป็นสตริงหรือบัฟเฟอร์และไม่สามารถ undefined หรือ null ประเภทวัตถุอื่น ๆ จะถูกแปลงเป็นสตริงด้วยวิธี toString() และสตริงผลลัพธ์ อาจไม่ เป็นศูนย์ความยาว ชุดข้อมูลที่สมบูรณ์ยิ่งขึ้นนั้นได้รับการจัดเตรียมไว้ใน levelup
options คุณสมบัติเดียวที่มีอยู่ในปัจจุบันในวัตถุ options คือ sync (บูลีน, ค่าเริ่มต้น: false ) ดู db.put() สำหรับรายละเอียดเกี่ยวกับตัวเลือกนี้
ฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์หากการดำเนินการสำเร็จหรือมีอาร์กิวเมนต์ข้อ error เดียวหากการดำเนินการล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม
db.batch(operations[, options], callback) (แบบฟอร์มอาร์เรย์) ดำเนินการหลายการดำเนิน การ และ/หรือ DEL เป็นกลุ่ม อาร์กิวเมนต์ operations จะต้องเป็น Array ที่มีรายการการดำเนินการที่จะดำเนินการตามลำดับแม้ว่าโดยรวมแล้วพวกเขาจะดำเนินการเป็นการดำเนินการอะตอม
การดำเนินการแต่ละครั้งมีอยู่ในวัตถุที่มีคุณสมบัติดังต่อไปนี้: type , key , value , โดยที่ type คือ 'put' หรือ 'del' ในกรณีของ 'del' คุณสมบัติ value จะถูกละเว้น
รายการใด ๆ ที่ key หรือ value (ในกรณีของ 'put' ) เป็น null หรือ undefined จะทำให้เกิดข้อผิดพลาดที่จะส่งคืนใน callback รายการใด ๆ ที่ type คือ 'put' ที่มี value ของ [] , '' หรือ Buffer.alloc(0) จะถูกเก็บไว้เป็นอาร์เรย์อักขระที่มีความยาวเป็นศูนย์และดังนั้นจึงถูกนำไปใช้ในระหว่างการอ่านเป็น '' หรือ Buffer.alloc(0) ขึ้นอยู่กับวิธีการร้องขอ ดู levelup สำหรับเอกสารฉบับเต็มเกี่ยวกับวิธีการทำงานในทางปฏิบัติ
อาร์กิวเมนต์ options ทางเลือกอาจมี:
sync (บูลีน, ค่าเริ่มต้น: false ) ดู db.put() สำหรับรายละเอียดเกี่ยวกับตัวเลือกนี้ ฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์หากแบทช์สำเร็จหรือมี Error หากแบทช์ล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม
db.batch() (รูปแบบที่ถูกล่ามโซ่) ส่งคืนอินสแตนซ์ chainedBatch ใหม่
db.approximateSize(start, end, callback) approximateSize() เป็นวิธีการอินสแตนซ์บนวัตถุฐานข้อมูลที่มีอยู่ ใช้เพื่อรับจำนวนไบต์ของพื้นที่ระบบไฟล์ที่ใช้โดยช่วง [start..end) ผลลัพธ์อาจไม่รวมข้อมูลที่เขียนเมื่อเร็ว ๆ นี้
พารามิเตอร์ start และ end อาจเป็นสตริงหรือบัฟเฟอร์ที่แสดงถึงคีย์ใน Store LevelDB
ฟังก์ชั่น callback จะถูกเรียกด้วย error เดียวหากการดำเนินการล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม หากประสบความสำเร็จอาร์กิวเมนต์แรกจะเป็น null และอาร์กิวเมนต์ที่สองจะเป็นขนาดโดยประมาณเป็นตัวเลข
db.compactRange(start, end, callback) compactRange() เป็นวิธีการอินสแตนซ์บนวัตถุฐานข้อมูลที่มีอยู่ ใช้ในการเรียกใช้การบดอัดฐานข้อมูลด้วยตนเองในช่วง [start..end)
พารามิเตอร์ start และ end อาจเป็นสตริงหรือบัฟเฟอร์ที่แสดงถึงคีย์ใน Store LevelDB
ฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์หากการดำเนินการสำเร็จหรือมีอาร์กิวเมนต์ข้อ error เดียวหากการดำเนินการล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม
db.getProperty(property) getProperty สามารถใช้เพื่อรับรายละเอียดภายในจาก LevelDB เมื่อออกด้วยสตริงคุณสมบัติที่ถูกต้องสตริงที่อ่านได้จะถูกส่งคืน (วิธีนี้เป็นแบบซิงโครนัส)
ปัจจุบันคุณสมบัติที่ถูกต้องเท่านั้นคือ:
leveldb.num-files-at-levelN : ส่งคืนจำนวนไฟล์ที่ระดับ N โดยที่ n คือจำนวนเต็มที่แสดงถึงระดับที่ถูกต้อง (เช่น "0")
leveldb.stats : ส่งคืนสตริงหลายบรรทัดที่อธิบายสถิติเกี่ยวกับการดำเนินการภายในของ LevelDB
leveldb.sstables : ส่งคืนสตริงหลายบรรทัดที่อธิบายถึง SSTables ทั้งหมดที่ประกอบขึ้นเป็นเนื้อหาของฐานข้อมูลปัจจุบัน
db.iterator([options]) ส่งคืน iterator ซ์ใหม่ ยอมรับตัวเลือกช่วงต่อไปนี้:
gt (มากกว่า), gte (มากกว่าหรือเท่ากัน) กำหนดขอบเขตล่างของช่วงที่จะวนซ้ำ เฉพาะรายการที่คีย์มากกว่า (หรือเท่ากับ) ตัวเลือกนี้จะรวมอยู่ในช่วง เมื่อ reverse=true คำสั่งซื้อจะกลับรายการ แต่รายการที่ทำซ้ำจะเหมือนกันlt (น้อยกว่า), lte (น้อยกว่าหรือเท่ากัน) กำหนดขอบเขตที่สูงกว่าของช่วงที่จะวนซ้ำ เฉพาะรายการที่คีย์น้อยกว่า (หรือเท่ากับ) ตัวเลือกนี้จะรวมอยู่ในช่วง เมื่อ reverse=true คำสั่งซื้อจะกลับรายการ แต่รายการที่ทำซ้ำจะเหมือนกันreverse (บูลีน, ค่าเริ่มต้น: false ) : รายการซ้ำตามลำดับย้อนกลับ ระวังว่าการแสวงหาย้อนกลับอาจช้ากว่าการแสวงหาไปข้างหน้าlimit (หมายเลข, ค่าเริ่มต้น: -1 ) : จำกัด จำนวนรายการที่รวบรวมโดยตัววนซ้ำนี้ หมายเลขนี้แสดงจำนวนผลงาน สูงสุด และอาจไม่สามารถเข้าถึงได้หากคุณไปถึงจุดสิ้นสุดของช่วงก่อน ค่า -1 หมายความว่าไม่มีการ จำกัด เมื่อ reverse=true รายการที่มีคีย์สูงสุดจะถูกส่งคืนแทนคีย์ต่ำสุด นอกเหนือจากตัวเลือกช่วงตัวเลือก iterator() ยังมีตัวเลือกต่อไปนี้:
keys (บูลีน, ค่าเริ่มต้น: true ) : จะส่งคืนคีย์ของแต่ละรายการหรือไม่ หากตั้งค่าเป็น false การโทรไปยัง iterator.next(callback) จะให้ปุ่มที่มีค่าของค่า undefined 1 มีประสิทธิภาพเล็กน้อยหากคุณไม่สนใจว่ากุญแจจะเป็นอย่างไรเพราะไม่จำเป็นต้องแปลงและคัดลอกเป็นจาวาสคริปต์values (บูลีน, ค่าเริ่มต้น: true ) : จะส่งคืนค่าของแต่ละรายการหรือไม่ หากตั้งค่าเป็น false การโทรไปยัง iterator.next(callback) จะให้ค่าที่มีค่าของค่า undefined 1keyAsBuffer (บูลีน, ค่าเริ่มต้น: true ) : ไม่ว่าจะส่งคืนคีย์ของแต่ละรายการเป็นบัฟเฟอร์หรือสตริง การแปลงจากบัฟเฟอร์เป็นสตริงมีค่าใช้จ่ายดังนั้นหากคุณต้องการสตริง (และ key สามารถกลายเป็นสตริง UTF8 ได้อย่างถูกกฎหมาย) คุณควรดึงข้อมูลเป็นหนึ่งเดียวvalueAsBuffer (บูลีน, ค่าเริ่มต้น: true ) : ไม่ว่าจะส่งคืนค่าของแต่ละรายการเป็นบัฟเฟอร์หรือสตริงfillCache (บูลีน, ค่าเริ่มต้น: false ): LRU-cache ของ LevelDB ควรเต็มไปด้วยการอ่านข้อมูลหรือไม่ 1 leveldown ส่งคืนสตริงที่ว่างเปล่าแทนที่จะ undefined ในขณะนี้
db.clear([options, ]callback)ลบรายการทั้งหมดหรือช่วง ไม่รับประกันว่าจะเป็นอะตอม ยอมรับตัวเลือกช่วงต่อไปนี้ (ด้วยกฎเดียวกันกับบนตัววนซ้ำ):
gt (มากกว่า), gte (มากกว่าหรือเท่ากัน) กำหนดขอบเขตล่างของช่วงที่จะลบ เฉพาะรายการที่คีย์มากกว่า (หรือเท่ากับ) ตัวเลือกนี้จะรวมอยู่ในช่วง เมื่อ reverse=true คำสั่งซื้อจะกลับรายการ แต่รายการที่ถูกลบจะเหมือนกันlt (น้อยกว่า), lte (น้อยกว่าหรือเท่ากัน) กำหนดขอบเขตที่สูงกว่าของช่วงที่จะลบ เฉพาะรายการที่คีย์น้อยกว่า (หรือเท่ากับ) ตัวเลือกนี้จะรวมอยู่ในช่วง เมื่อ reverse=true คำสั่งซื้อจะกลับรายการ แต่รายการที่ถูกลบจะเหมือนกันreverse (บูลีน, ค่าเริ่มต้น: false ) : ลบรายการตามลำดับย้อนกลับ มีผลบังคับใช้ร่วมกับ limit เท่านั้นเพื่อลบรายการ N สุดท้ายlimit (หมายเลข, ค่าเริ่มต้น: -1 ) : จำกัด จำนวนรายการที่จะลบ หมายเลขนี้แสดงจำนวนผลงาน สูงสุด และอาจไม่สามารถเข้าถึงได้หากคุณไปถึงจุดสิ้นสุดของช่วงก่อน ค่า -1 หมายความว่าไม่มีการ จำกัด เมื่อ reverse=true รายการที่มีคีย์สูงสุดจะถูกลบแทนคีย์ต่ำสุด หากไม่มีตัวเลือกใดรายการทั้งหมดจะถูกลบ ฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์หากการดำเนินการสำเร็จหรือมี Error หากล้มเหลวด้วยเหตุผลใดก็ตาม
chainedBatchchainedBatch.put(key, value) คิวการดำเนินการ put ในชุดนี้ สิ่งนี้อาจโยนได้หาก key หรือ value ไม่ถูกต้องตามกฎเดียวกันกับรูปแบบอาร์เรย์ของ db.batch()
chainedBatch.del(key) คิวการดำเนินการ del ในชุดนี้ สิ่งนี้อาจโยนถ้า key ไม่ถูกต้อง
chainedBatch.clear()ล้างการดำเนินการคิวทั้งหมดในชุดนี้
chainedBatch.write([options, ]callback)กระทำการคิวสำหรับชุดนี้ การดำเนินการทั้งหมดจะถูกเขียนแบบอะตอมนั่นคือพวกเขาทั้งหมดจะประสบความสำเร็จหรือล้มเหลวโดยไม่มีการกระทำบางส่วน
อาร์กิวเมนต์ options ทางเลือกอาจมี:
sync (บูลีน, ค่าเริ่มต้น: false ) ดู db.put() สำหรับรายละเอียดเกี่ยวกับตัวเลือกนี้ ฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์หากแบทช์สำเร็จหรือมี Error หากแบทช์ล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม หลังจาก write ได้รับการเรียกแล้วไม่อนุญาตให้มีการดำเนินการเพิ่มเติม
chainedBatch.db การอ้างอิงถึง db ที่สร้างชุดที่ถูกล่ามโซ่นี้
iterator ตัววนซ้ำช่วยให้คุณ ย้ำ ทั้งร้านค้าหรือช่วง มันทำงานบนภาพรวมของร้านค้าที่สร้างขึ้นในเวลา db.iterator() ถูกเรียก ซึ่งหมายความว่าการอ่านบนตัววนซ้ำจะไม่ได้รับผลกระทบจากการเขียนพร้อมกัน
ตัววนซ้ำสามารถใช้ for await...of หรือโดยการโทรด้วยตนเอง iterator.next() อย่างต่อเนื่อง ในโหมดหลังต้องเรียก iterator.end() เสมอ ในทางตรงกันข้ามการตกแต่งการขว้างหรือการทำลายจาก A for await...of ลูปเรียก iterator.end() โดยอัตโนมัติ
ตัววนซ้ำมาถึงจุดสิ้นสุดตามธรรมชาติในสถานการณ์ต่อไปนี้:
iterator.seek() สุดท้ายอยู่นอกระยะ ตัววนซ้ำติดตามเมื่อมีการดำเนินการ next() และเมื่อมีการเรียก end() ดังนั้นจึงไม่อนุญาตให้มีการโทร next() พร้อมกันมันจะอนุญาตให้ end() ในขณะที่ next() กำลังดำเนินการอยู่และไม่อนุญาตให้ทั้ง next() หรือ end() end()
for await...of iterator อาร์เรย์อัตราผลตอบแทนที่มี key และ value ประเภทของ key และ value ขึ้นอยู่กับตัวเลือกที่ส่งผ่านไปยัง db.iterator()
try {
for await ( const [ key , value ] of db . iterator ( ) ) {
console . log ( key )
}
} catch ( err ) {
console . error ( err )
} iterator.next([callback]) พัฒนาตัววนซ้ำและให้รายการที่คีย์นั้น หากเกิดข้อผิดพลาดฟังก์ชั่น callback จะถูกเรียกด้วย Error มิฉะนั้น callback จะได้รับ null key และ value ประเภทของ key และ value ขึ้นอยู่กับตัวเลือกที่ส่งผ่านไปยัง db.iterator() หากตัววนซ้ำมาถึงจุดสิ้นสุดตามธรรมชาติทั้ง key และ value จะ undefined
หากไม่มีการโทรกลับจะมีการส่งคืนคำสัญญาสำหรับอาร์เรย์ (มี key และ value ) หรือ undefined หากผู้วนซ้ำมาถึงจุดสิ้นสุดตามธรรมชาติ
หมายเหตุ: โทรหา iterator.end() เสมอแม้ว่าคุณจะได้รับข้อผิดพลาดและแม้ว่าตัววนซ้ำมาถึงจุดสิ้นสุดตามธรรมชาติ
iterator.seek(key) ค้นหาตัววนซ้ำไปยังคีย์ที่กำหนดหรือคีย์ที่ใกล้เคียงที่สุด การโทรไปยัง iterator.next() จะให้รายการที่มีคีย์เท่ากับหรือใหญ่กว่า target หรือเท่ากับหรือเล็กกว่า target หากตัวเลือก reverse ส่งผ่านไปยัง db.iterator() เป็นจริง เช่นเดียวกับการโทรโดยนัย iterator.next() ใน for await...of ลูป
หากตัวเลือกช่วงเช่น gt ถูกส่งผ่านไปยัง db.iterator() และ target จะไม่อยู่ในช่วงนั้นตัววนซ้ำจะถึงจุดสิ้นสุดตามธรรมชาติ
iterator.end([callback]) ยุติการทำซ้ำและเป็นแหล่งข้อมูลพื้นฐานฟรี ฟังก์ชั่น callback จะถูกเรียกโดยไม่มีอาร์กิวเมนต์เกี่ยวกับความสำเร็จหรือมี Error หากสิ้นสุดล้มเหลวไม่ว่าด้วยเหตุผลใดก็ตาม
หากไม่มีการโทรกลับจะมีการส่งคืนสัญญา
iterator.db การอ้างอิงถึง db ที่สร้างตัววนซ้ำนี้
leveldown.destroy(location, callback) ลบไดเรกทอรีฐานข้อมูล LevelDB ที่มีอยู่อย่างสมบูรณ์ คุณสามารถใช้ฟังก์ชั่นนี้แทนไดเรกทอรีเต็มรูปแบบ rm หากคุณต้องการให้แน่ใจว่าได้ลบไฟล์ที่เกี่ยวข้องกับ LevelDB เท่านั้น หากไดเรกทอรีมีไฟล์ LevelDB เท่านั้นไดเรกทอรีจะถูกลบออกเช่นกัน หากมีไฟล์เพิ่มเติมที่ไม่ใช่ LevelDB ในไดเรกทอรีไฟล์เหล่านั้นและไดเรกทอรีจะถูกทิ้งไว้ตามลำพัง
การเรียกกลับจะถูกเรียกเมื่อการดำเนินการทำลายเสร็จสมบูรณ์พร้อมอาร์กิวเมนต์ error ที่เป็นไปได้
leveldown.repair(location, callback)พยายามฟื้นฟูร้านค้า LevelDB ที่เสียหาย จากเอกสาร LevelDB:
หากไม่สามารถเปิดฐานข้อมูลได้คุณอาจพยายามเรียกใช้วิธีนี้เพื่อคืนชีพเนื้อหาของฐานข้อมูลให้มากที่สุด ข้อมูลบางอย่างอาจหายไปดังนั้นโปรดระวังเมื่อเรียกใช้ฟังก์ชั่นนี้ในฐานข้อมูลที่มีข้อมูลสำคัญ
คุณจะพบข้อมูลเกี่ยวกับการดำเนินการ ซ่อมแซม ในไฟล์ บันทึก ภายในไดเรกทอรีร้านค้า
repair() ยังสามารถใช้เพื่อทำการบดอัดของบันทึก LevelDB ลงในไฟล์ตาราง
การโทรกลับจะถูกเรียกเมื่อการดำเนินการซ่อมเสร็จสมบูรณ์พร้อมอาร์กิวเมนต์ error ที่เป็นไปได้
ขณะนี้ leveldown ไม่ได้ติดตามสถานะของอินสแตนซ์ระดับพื้นฐาน ซึ่งหมายความว่าการเรียก open() บนฐานข้อมูลที่เปิดอยู่แล้วอาจส่งผลให้เกิดข้อผิดพลาด ในทำนองเดียวกันการเรียกการดำเนินการอื่น ๆ บนฐานข้อมูลที่ไม่ใช่เปิดอาจส่งผลให้เกิดข้อผิดพลาด
ปัจจุบัน levelup ติดตามและจัดการสถานะและจะป้องกันไม่ให้การดำเนินงานนอกรัฐถูกส่งไปยัง leveldown หากคุณใช้ leveldown โดยตรงคุณต้องติดตามและจัดการสถานะด้วยตัวคุณเอง
leveldown เปิดเผยคุณสมบัติของ LEVELDB ที่เรียกว่า Snapshots ซึ่งหมายความว่าเมื่อคุณทำเช่น createReadStream และ createWriteStream ในเวลาเดียวกันข้อมูลใด ๆ ที่แก้ไขโดยสตรีมการเขียนจะไม่ส่งผลกระทบต่อข้อมูลที่ปล่อยออกมาจากสตรีมอ่าน กล่าวอีกนัยหนึ่งสแนปชอตระดับ LEVELDB จะจับสถานะล่าสุดในเวลาที่สร้างสแน็ปช็อตทำให้สแน็ปช็อตซ้ำหรืออ่านข้อมูลโดยไม่เห็นการเขียนที่ตามมา การอ่านใด ๆ ที่ไม่ได้ดำเนินการบนสแน็ปช็อตจะใช้สถานะล่าสุดโดยปริยาย
คุณยินดีที่จะเปิดปัญหาเกี่ยวกับที่เก็บ GitHub หากคุณมีคำถาม
ช่องทางสนับสนุนที่ผ่านมาและไม่ได้ใช้งานอีกต่อไปรวมถึงช่อง ##leveldb IRC ช่องบน FreeNode และ Node.js LevelDB Group Google Group
Level/leveldown เป็น โครงการโอเพนซอร์สแบบเปิด ซึ่งหมายความว่า:
บุคคลที่มีส่วนร่วมอย่างมีนัยสำคัญและมีคุณค่าจะได้รับมอบหมายให้เข้าถึงโครงการเพื่อมีส่วนร่วมตามที่เห็นสมควร โครงการนี้เป็นเหมือนวิกิเปิดมากกว่าโครงการโอเพนซอร์สที่ได้รับการปกป้องมาตรฐาน
ดูคู่มือการบริจาคสำหรับรายละเอียดเพิ่มเติม
โครงการนี้ใช้ git submodules ซึ่งหมายความว่าคุณควรโคลนมันซ้ำ ๆ หากคุณวางแผนที่จะทำงาน:
$ git clone --recurse-submodules https://github.com/Level/leveldown.gitหรือคุณสามารถเริ่มต้น submodules ภายในโฟลเดอร์โคลน:
$ git submodule update --init --recursivenpm version ..git push --follow-tagsnpm run download-prebuilds ./prebuildsnpm run test-prebuildcanadian-pubnpm publish สนับสนุนเราด้วยการบริจาครายเดือนเกี่ยวกับ Open Collective และช่วยให้เราทำงานต่อไป
มิกซ์
leveldown สร้างขึ้นจากการทำงานที่ยอดเยี่ยมของทีม LevelDB และ Snappy จาก Google และผู้สนับสนุนเพิ่มเติม LEVELDB และ Snappy ทั้งคู่ออกภายใต้ใบอนุญาต BSD ใหม่ การรองรับ Windows leveldown ส่วนใหญ่มาจากพอร์ต Windows LevelDB (เก็บถาวร) โดย Krzysztof Kowalczyk ( @kjk ) หากคุณใช้ leveldown บน Windows คุณควรขอบคุณเขา!