Digantikan oleh classic-level . Silakan lihat pertanyaan yang sering diajukan.
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) (formulir array)db.batch() (formulir rantai)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) Modul ini awalnya merupakan bagian dari levelup tetapi kemudian diekstraksi dan sekarang berfungsi sebagai ikatan yang berdiri sendiri untuk LevelDB.
Sangat disarankan agar Anda menggunakan levelup dalam preferensi untuk leveldown kecuali Anda memiliki alasan kinerja yang terukur untuk melakukannya. levelup dioptimalkan untuk kegunaan dan keamanan. Meskipun kami berupaya meningkatkan keamanan antarmuka leveldown , masih mudah untuk menghancurkan proses simpul Anda jika Anda tidak melakukan sesuatu dengan cara yang benar.
Lihat bagian keamanan di bawah ini untuk perincian operasi tidak aman yang diketahui dengan leveldown .
Kami bertujuan untuk mendukung setidaknya LTS aktif dan rilis Node.js saat ini, elektron 5.0.0, serta rilis node.js dan elektron di masa depan berkat N-API. Versi node minimum untuk leveldown adalah 10.12.0 . Sebaliknya, untuk node> = 12, versi leveldown minimum adalah 5.0.0 .
Paket NPM leveldown dikirimkan dengan biner prebuilt untuk platform 64-bit populer serta ARM, M1, Android dan Alpine (MUSL) dan diketahui bekerja pada:
Saat menginstal leveldown , node-gyp-build akan memeriksa apakah ada biner yang kompatibel dan mundur ke langkah kompilasi jika tidak. Dalam hal ini Anda akan memerlukan instalasi node-gyp yang valid.
Jika Anda tidak ingin menggunakan biner prebuilt untuk platform yang Anda instal, tentukan bendera --build-from-source saat Anda menginstal. Salah satu:
npm install --build-from-source
npm install leveldown --build-from-source
Jika Anda mengerjakan leveldown sendiri dan ingin mengkompilasi ulang kode C ++, jalankan npm run rebuild .
leveldown > = 5. Ini dapat diperiksa dengan menjalankan npm ls leveldown .leveldown ke> = 5.3.0 atau menggunakan --build-from-source .--build-from-source . Ini tidak lagi terjadi.nodejs-mobile . Jika Anda meningkatkan: silakan lihat UPGRADING.md .
db = leveldown(location) Mengembalikan instance leveldown baru. location adalah string yang menunjuk ke lokasi LevelDB yang akan dibuka.
db.open([options, ]callback) Buka toko. Fungsi callback akan dipanggil tanpa argumen ketika database telah berhasil dibuka, atau dengan argumen error tunggal jika operasi terbuka gagal karena alasan apa pun.
options Argumen options opsional mungkin berisi:
createIfMissing (boolean, default: true ): Jika true , akan menginisialisasi database kosong di lokasi yang ditentukan jika ada yang belum ada. Jika false dan database tidak ada, Anda akan menerima kesalahan dalam panggilan balik open() Anda dan database Anda tidak akan terbuka.
errorIfExists (boolean, default: false ): Jika true , Anda akan menerima kesalahan dalam panggilan balik open() jika database ada di lokasi yang ditentukan.
compression (boolean, default: true ): Jika true , semua data kompresibel akan dijalankan melalui algoritma kompresi tajam sebelum disimpan. Snappy sangat cepat dan tidak boleh mendapatkan banyak kecepatan dengan menonaktifkan jadi biarkan ini kecuali Anda memiliki alasan yang bagus untuk mematikannya.
cacheSize (angka, default: 8 * 1024 * 1024 = 8MB): Ukuran (dalam byte) dari cache LRU dalam memori dengan konten blok yang tidak dikompresi yang sering digunakan.
Opsi lanjutan
Opsi berikut adalah untuk penyetelan kinerja lanjutan. Ubahnya hanya jika Anda dapat membuktikan manfaat aktual untuk aplikasi khusus Anda.
writeBufferSize (angka, default: 4 * 1024 * 1024 = 4MB): Ukuran maksimum (dalam byte) dari log (dalam memori dan disimpan dalam file .log pada disk). Di luar ukuran ini, LevelDB akan mengonversi data log ke tingkat pertama file tabel yang diurutkan. Dari dokumentasi LevelDB:Nilai yang lebih besar meningkatkan kinerja, terutama selama beban curah. Hingga dua buffer menulis dapat diadakan dalam memori secara bersamaan, jadi Anda mungkin ingin menyesuaikan parameter ini untuk mengontrol penggunaan memori. Juga, buffer tulis yang lebih besar akan menghasilkan waktu pemulihan yang lebih lama pada saat basis data dibuka.
blockSize (angka, default 4096 = 4K): Ukuran perkiraan blok yang membentuk file tabel. Ukuran yang terkait dengan data yang tidak terkompresi (karenanya "perkiraan"). Blok diindeks dalam file tabel dan tampilan entri melibatkan membaca seluruh blok dan penguraian untuk menemukan entri yang diperlukan.
maxOpenFiles (Nomor, Default: 1000 ): Jumlah maksimum file yang diizinkan oleh LevelDB untuk dibuka sekaligus. Jika penyimpanan data Anda cenderung memiliki set kerja yang besar, Anda dapat meningkatkan nilai ini untuk mencegah churn deskriptor file. Untuk menghitung jumlah file yang diperlukan untuk set kerja Anda, bagilah total data Anda dengan 'maxFileSize' .
blockRestartInterval (Nomor, Default: 16 ): Jumlah entri sebelum memulai kembali "pengkodean delta" dari kunci dalam blok. Setiap titik "restart" menyimpan kunci penuh untuk entri, antara restart, awalan umum dari kunci untuk entri tersebut dihilangkan. Restart mirip dengan konsep kerangka kunci dalam pengkodean video dan digunakan untuk meminimalkan jumlah ruang yang diperlukan untuk menyimpan kunci. Ini sangat membantu saat menggunakan nama yang dalam / awalan di kunci Anda.
maxFileSize (angka, default: 2* 1024 * 1024 = 2MB): Jumlah maksimum byte untuk menulis ke file sebelum beralih ke yang baru. Dari dokumentasi LevelDB:
... Jika sistem file Anda lebih efisien dengan file yang lebih besar, Anda dapat mempertimbangkan untuk meningkatkan nilainya. Kelemahannya akan lebih lama dipadatkan dan karenanya cegukan latensi/kinerja yang lebih lama. Alasan lain untuk meningkatkan parameter ini mungkin ketika Anda awalnya mengisi database besar.
db.close(callback) close() adalah metode instan pada objek database yang ada. Basis data LevelDB yang mendasarinya akan ditutup dan fungsi callback akan dipanggil tanpa argumen jika operasi berhasil atau dengan argumen error tunggal jika operasi gagal karena alasan apa pun.
leveldown menunggu operasi yang tertunda untuk menyelesaikan sebelum ditutup. Misalnya:
db . put ( 'key' , 'value' , function ( err ) {
// This happens first
} )
db . close ( function ( err ) {
// This happens second
} )db.put(key, value[, options], callback)Simpan entri baru atau timpa entri yang ada.
Objek key dan value dapat berupa string atau buffer. Jenis objek lainnya dikonversi menjadi string dengan metode toString() . Kunci mungkin tidak null atau undefined dan objek dikonversi dengan toString() tidak boleh menghasilkan string kosong. Nilai mungkin tidak null atau undefined . Nilai '' , [] dan Buffer.alloc(0) (dan objek apa pun yang menghasilkan toString() dari salah satu dari ini) akan disimpan sebagai array karakter nol-panjang dan karenanya akan diambil sebagai '' atau Buffer.alloc(0) tergantung pada jenis yang diminta.
Serangkaian jenis data yang lebih kaya dilayani di levelup .
options Satu -satunya properti yang saat ini tersedia pada objek options adalah sync (boolean, default: false ) . Jika Anda memberikan nilai sync true di objek options Anda, LevelDB akan melakukan penulisan data yang sinkron; Meskipun operasi akan asinkron sejauh menyangkut simpul. Biasanya, LevelDB meneruskan data ke sistem operasi untuk menulis dan mengembalikan segera, namun tulisan yang sinkron akan menggunakan fsync() atau setara sehingga panggilan balik Anda tidak akan dipicu sampai data sebenarnya pada disk. Synchronous Filesystem menulis secara signifikan lebih lambat dari yang ditulis asinkron tetapi jika Anda ingin benar -benar yakin bahwa data itu memerah maka Anda dapat menggunakan { sync: true } .
Fungsi callback akan dipanggil tanpa argumen jika operasi berhasil atau dengan argumen error tunggal jika operasi gagal karena alasan apa pun.
db.get(key[, options], callback) Dapatkan nilai dari toko LevelDB dengan key .
Objek key dapat berupa string atau buffer dan tidak dapat undefined atau null . Jenis objek lain dikonversi menjadi string dengan metode toString() dan string yang dihasilkan mungkin bukan nol-length. Serangkaian jenis data yang lebih kaya dilayani di levelup .
Nilai yang diambil melalui get() yang disimpan sebagai array karakter nol-panjang ( null , undefined , '' , [] , Buffer.alloc(0) ) akan kembali sebagai String kosong ( '' ) atau Buffer.alloc(0) ketika diambil dengan asBuffer: true (lihat di bawah).
options Objek options opsional mungkin berisi:
asBuffer (boolean, default: true ): Digunakan untuk menentukan apakah akan mengembalikan value entri sebagai string atau buffer. Perhatikan bahwa mengonversi dari buffer ke string mengeluarkan biaya jadi jika Anda memerlukan string (dan value dapat secara sah menjadi string UTF8) maka Anda harus mengambilnya sebagai satu dengan { asBuffer: false } dan Anda akan menghindari biaya konversi ini.fillCache (Boolean, default: true ): LevelDB akan secara default mengisi cache LRU dalam memori dengan data dari panggilan untuk mendapatkan. Menonaktifkan ini dilakukan dengan mengatur fillCache ke false . Fungsi callback akan dipanggil dengan satu error jika operasi gagal karena alasan apa pun, termasuk jika kunci tidak ditemukan. Jika berhasil, argumen pertama adalah null dan argumen kedua akan menjadi value sebagai string atau buffer tergantung pada opsi asBuffer .
db.getMany(keys[, options][, callback]) Dapatkan beberapa nilai dari toko dengan array keys . Objek options opsional mungkin berisi asBuffer dan fillCache , seperti yang dijelaskan dalam get() .
Fungsi callback akan dipanggil dengan Error jika operasi gagal karena alasan apa pun. Jika berhasil, argumen pertama akan menjadi null dan argumen kedua akan menjadi array nilai dengan urutan yang sama dengan keys . Jika kunci tidak ditemukan, nilai yang relevan tidak akan undefined .
Jika tidak ada panggilan balik yang diberikan, janji dikembalikan.
db.del(key[, options], callback) Hapus entri. Objek key dapat berupa string atau buffer dan tidak dapat undefined atau null . Jenis objek lain dikonversi menjadi string dengan metode toString() dan string yang dihasilkan mungkin bukan nol-length. Serangkaian jenis data yang lebih kaya dilayani di levelup .
options Satu -satunya properti yang saat ini tersedia pada objek options adalah sync (boolean, default: false ) . Lihat db.put() untuk detail tentang opsi ini.
Fungsi callback akan dipanggil tanpa argumen jika operasi berhasil atau dengan argumen error tunggal jika operasi gagal karena alasan apa pun.
db.batch(operations[, options], callback) (formulir array) Lakukan beberapa operasi put dan/atau del dalam jumlah besar. Argumen operations harus berupa Array yang berisi daftar operasi yang akan dieksekusi secara berurutan, meskipun secara keseluruhan mereka dilakukan sebagai operasi atom.
Setiap operasi terkandung dalam suatu objek yang memiliki properti berikut: type , key , value , di mana type 'put' atau 'del' . Dalam kasus 'del' properti value diabaikan.
Setiap entri di mana key atau value (dalam kasus 'put' ) adalah null atau undefined akan menyebabkan kesalahan dikembalikan pada callback . Setiap entri di mana type 'put' yang memiliki value [] , '' atau Buffer.alloc(0) akan disimpan sebagai array karakter nol-panjang dan karenanya diambil selama dibaca sebagai '' atau Buffer.alloc(0) tergantung pada bagaimana mereka diminta. Lihat levelup untuk dokumentasi lengkap tentang cara kerja ini dalam praktik.
Argumen options opsional mungkin berisi:
sync (boolean, default: false ). Lihat db.put() untuk detail tentang opsi ini. Fungsi callback akan dipanggil tanpa argumen jika batch berhasil atau dengan Error jika batch gagal karena alasan apa pun.
db.batch() (formulir rantai) Mengembalikan instance chainedBatch baru.
db.approximateSize(start, end, callback) approximateSize() adalah metode instan pada objek database yang ada. Digunakan untuk mendapatkan perkiraan jumlah byte ruang sistem file yang digunakan oleh rentang [start..end) . Hasilnya mungkin tidak termasuk data tertulis baru -baru ini.
Parameter start dan end mungkin string atau buffer yang mewakili kunci di toko LevelDB.
Fungsi callback akan dipanggil dengan satu error jika operasi gagal karena alasan apa pun. Jika berhasil, argumen pertama adalah null dan argumen kedua akan menjadi ukuran perkiraan sebagai angka.
db.compactRange(start, end, callback) compactRange() adalah metode instan pada objek database yang ada. Digunakan untuk memicu pemadatan basis data secara manual dalam kisaran [start..end) .
Parameter start dan end mungkin string atau buffer yang mewakili kunci di toko LevelDB.
Fungsi callback akan dipanggil tanpa argumen jika operasi berhasil atau dengan argumen error tunggal jika operasi gagal karena alasan apa pun.
db.getProperty(property) getProperty dapat digunakan untuk mendapatkan detail internal dari LevelDB. Ketika dikeluarkan dengan string properti yang valid, string yang dapat dibaca akan dikembalikan (metode ini sinkron).
Saat ini, satu -satunya properti yang valid adalah:
leveldb.num-files-at-levelN : kembalikan jumlah file di level n , di mana n adalah bilangan bulat yang mewakili level yang valid (misalnya "0").
leveldb.stats : Mengembalikan string multi-line yang menggambarkan statistik tentang operasi internal LevelDB.
leveldb.sstables : Mengembalikan string multi-line yang menggambarkan semua SStables yang membentuk konten dari database saat ini.
db.iterator([options]) Mengembalikan instance iterator baru. Menerima opsi rentang berikut:
gt (lebih besar dari), gte (lebih dari atau sama) menentukan batas bawah rentang yang akan diulang. Hanya entri di mana kunci lebih besar dari (atau sama dengan) opsi ini akan dimasukkan dalam kisaran. Ketika reverse=true Urutan akan dibalik, tetapi entri yang diulang akan sama.lt (kurang dari), lte (kurang dari atau sama) menentukan batas yang lebih tinggi dari rentang yang akan diulang. Hanya entri di mana kunci kurang dari (atau sama dengan) opsi ini akan dimasukkan dalam kisaran. Ketika reverse=true Urutan akan dibalik, tetapi entri yang diulang akan sama.reverse (boolean, default: false ) : Iterasi entri dalam urutan terbalik. Berhati -hatilah bahwa pencarian terbalik bisa lebih lambat dari pencarian ke depan.limit (Nomor, Default: -1 ) : Batasi jumlah entri yang dikumpulkan oleh iterator ini. Jumlah ini mewakili jumlah maksimum entri dan tidak dapat dicapai jika Anda sampai di akhir kisaran terlebih dahulu. Nilai -1 berarti tidak ada batasan. Ketika reverse=true Entri dengan kunci tertinggi akan dikembalikan, bukan tombol terendah. Selain opsi rentang, iterator() mengambil opsi berikut:
keys (Boolean, Default: true ) : Apakah akan mengembalikan kunci dari setiap entri. Jika diatur ke false , panggilan ke iterator.next(callback) akan menghasilkan kunci dengan nilai 1 undefined . Ada keuntungan efisiensi yang kecil jika pada akhirnya Anda tidak peduli apa kunci itu karena mereka tidak perlu dikonversi dan disalin menjadi JavaScript.values (boolean, default: true ) : Apakah akan mengembalikan nilai setiap entri. Jika diatur ke false , panggilan ke iterator.next(callback) akan menghasilkan nilai dengan nilai 1 undefined .keyAsBuffer (Boolean, Default: true ) : Apakah akan mengembalikan kunci dari setiap entri sebagai buffer atau string. Mengonversi dari buffer ke string mengeluarkan biaya jadi jika Anda membutuhkan string (dan key dapat secara sah menjadi string UTF8) maka Anda harus mengambilnya sebagai satu.valueAsBuffer (Boolean, Default: true ) : Apakah akan mengembalikan nilai setiap entri sebagai buffer atau string.fillCache (Boolean, Default: false ): Apakah LevelDB's LRU-Cache harus diisi dengan data yang dibaca. 1 leveldown mengembalikan string kosong daripada undefined saat ini.
db.clear([options, ]callback)Hapus semua entri atau rentang. Tidak dijamin atom. Menerima opsi rentang berikut (dengan aturan yang sama seperti pada iterator):
gt (lebih besar dari), gte (lebih dari atau sama) menentukan batas bawah rentang yang akan dihapus. Hanya entri di mana kunci lebih besar dari (atau sama dengan) opsi ini akan dimasukkan dalam kisaran. Ketika reverse=true Urutan akan dibalik, tetapi entri yang dihapus akan sama.lt (kurang dari), lte (kurang dari atau sama) menentukan batas yang lebih tinggi dari rentang yang akan dihapus. Hanya entri di mana kunci kurang dari (atau sama dengan) opsi ini akan dimasukkan dalam kisaran. Ketika reverse=true Urutan akan dibalik, tetapi entri yang dihapus akan sama.reverse (boolean, default: false ) : Hapus entri dalam urutan terbalik. Hanya efektif dalam kombinasi dengan limit , untuk menghapus entri N terakhir.limit (Nomor, Default: -1 ) : Batasi jumlah entri yang akan dihapus. Jumlah ini mewakili jumlah maksimum entri dan tidak dapat dicapai jika Anda sampai di akhir kisaran terlebih dahulu. Nilai -1 berarti tidak ada batasan. Ketika reverse=true Entri dengan tombol tertinggi akan dihapus, bukan tombol terendah. Jika tidak ada opsi yang disediakan, semua entri akan dihapus. Fungsi callback akan dipanggil tanpa argumen jika operasi berhasil atau dengan Error jika gagal karena alasan apa pun.
chainedBatchchainedBatch.put(key, value) Antri operasi put pada batch ini. Ini mungkin melempar jika key atau value tidak valid, mengikuti aturan yang sama dengan bentuk array dari db.batch() .
chainedBatch.del(key) Antri operasi del pada batch ini. Ini mungkin melempar jika key tidak valid.
chainedBatch.clear()Hapus semua operasi yang antri pada batch ini.
chainedBatch.write([options, ]callback)Melakukan operasi antrian untuk batch ini. Semua operasi akan ditulis secara atom, yaitu, semuanya akan berhasil atau gagal tanpa komitmen parsial.
Argumen options opsional mungkin berisi:
sync (boolean, default: false ). Lihat db.put() untuk detail tentang opsi ini. Fungsi callback akan dipanggil tanpa argumen jika batch berhasil atau dengan Error jika batch gagal karena alasan apa pun. Setelah write dipanggil, tidak ada operasi lebih lanjut yang diizinkan.
chainedBatch.db Referensi ke db yang menciptakan batch rantai ini.
iterator Iterator memungkinkan Anda untuk mengulangi seluruh toko atau jangkauan. Ini beroperasi pada snapshot toko, dibuat pada saat itu db.iterator() dipanggil. Ini berarti dibaca di iterator tidak terpengaruh oleh tulisan simultan.
Iterator dapat dikonsumsi for await...of atau dengan secara manual menyebut iterator.next() secara berurutan. Dalam mode terakhir, iterator.end() harus selalu dipanggil. Sebaliknya, finishing, melempar atau melanggar dari for await...of loop secara otomatis memanggil iterator.end() .
Iterator mencapai ujung alami dalam situasi berikut:
iterator.seek() terakhir berada di luar jangkauan. Iterator melacak kapan next() sedang berlangsung dan kapan end() telah dipanggil sehingga tidak memungkinkan panggilan next() bersamaan, itu memungkinkan end() sementara next() sedang berlangsung dan tidak memungkinkan next() atau end() setelah end() telah dipanggil.
for await...of iterator Menghasilkan array yang berisi key dan value . Jenis key dan value tergantung pada opsi yang diteruskan ke db.iterator() .
try {
for await ( const [ key , value ] of db . iterator ( ) ) {
console . log ( key )
}
} catch ( err ) {
console . error ( err )
} iterator.next([callback]) Memajukan iterator dan menghasilkan entri di kunci itu. Jika terjadi kesalahan, fungsi callback akan dipanggil dengan Error . Kalau tidak, callback menerima null , key dan value . Jenis key dan value tergantung pada opsi yang diteruskan ke db.iterator() . Jika iterator telah mencapai ujung alami, baik key maupun value tidak akan undefined .
Jika tidak ada panggilan balik yang diberikan, janji dikembalikan untuk array (berisi key dan value ) atau undefined jika iterator mencapai ujung alami.
Catatan: Selalu hubungi iterator.end() , bahkan jika Anda menerima kesalahan dan bahkan jika iterator mencapai ujung alami.
iterator.seek(key) Carilah iterator ke kunci yang diberikan atau kunci terdekat. Panggilan berikutnya ke iterator.next() akan menghasilkan entri dengan kunci yang sama dengan atau lebih besar dari target , atau sama dengan atau lebih kecil dari target jika opsi reverse diteruskan ke db.iterator() benar. Hal yang sama berlaku untuk iterator.next() yang sama di for await...of loop.
Jika opsi rentang seperti gt diteruskan ke db.iterator() dan target tidak termasuk dalam kisaran itu, iterator akan mencapai ujung alami.
iterator.end([callback]) Akhiri iterasi dan membebaskan sumber daya yang mendasarinya. Fungsi callback akan dipanggil tanpa argumen tentang keberhasilan atau dengan Error jika berakhir gagal karena alasan apa pun.
Jika tidak ada panggilan balik yang diberikan, janji dikembalikan.
iterator.db Referensi ke db yang menciptakan iterator ini.
leveldown.destroy(location, callback) Hapus direktori basis data LevelDB yang ada. Anda dapat menggunakan fungsi ini sebagai pengganti rm direktori penuh jika Anda ingin memastikan hanya menghapus file terkait LevelDB. Jika direktori hanya berisi file LevelDB, direktori itu sendiri akan dihapus juga. Jika ada file tambahan, non-leveldb di direktori, file-file tersebut, dan direktori, akan dibiarkan sendiri.
Panggilan balik akan dipanggil ketika operasi hancur selesai, dengan kemungkinan argumen error .
leveldown.repair(location, callback)Mencoba pemulihan toko LevelDB yang rusak. Dari dokumentasi LevelDB:
Jika DB tidak dapat dibuka, Anda dapat mencoba memanggil metode ini untuk menghidupkan kembali sebanyak mungkin konten database. Beberapa data mungkin hilang, jadi berhati -hatilah saat memanggil fungsi ini pada database yang berisi informasi penting.
Anda akan menemukan informasi tentang operasi perbaikan di file log di dalam direktori toko.
repair() juga dapat digunakan untuk melakukan pemadatan log LevelDB ke dalam file tabel.
Panggilan balik akan dipanggil ketika operasi perbaikan selesai, dengan kemungkinan argumen error .
Saat ini leveldown tidak melacak keadaan instance LevelDB yang mendasarinya. Ini berarti bahwa panggilan open() pada database yang sudah terbuka dapat mengakibatkan kesalahan. Demikian juga, memanggil operasi lain pada database yang tidak terbuka dapat mengakibatkan kesalahan.
levelup saat ini melacak dan mengelola negara bagian dan akan mencegah operasi di luar negara dari dikirim ke leveldown . Jika Anda menggunakan leveldown secara langsung maka Anda harus melacak dan mengelola keadaan sendiri.
leveldown memperlihatkan fitur LevelDB yang disebut Snapshots. Ini berarti bahwa ketika Anda melakukan EG createReadStream dan createWriteStream pada saat yang sama, data apa pun yang dimodifikasi oleh aliran tulis tidak akan mempengaruhi data yang dipancarkan dari aliran baca. Dengan kata lain, snapshot levelDB menangkap keadaan terbaru pada saat snapshot dibuat, memungkinkan snapshot untuk mengulang atau membaca data tanpa melihat penulisan berikutnya. Bacaan apa pun yang tidak dilakukan pada snapshot akan secara implisit menggunakan negara terbaru.
Anda dipersilakan untuk membuka masalah di repositori GitHub jika Anda memiliki pertanyaan.
Saluran dukungan masa lalu dan tidak lagi aktif mencakup saluran ##leveldb IRC di FreeNode dan grup Google Node.js LevelDB.
Level/leveldown adalah proyek open source terbuka . Ini berarti bahwa:
Individu yang memberikan kontribusi yang signifikan dan berharga diberikan akses komit untuk proyek untuk berkontribusi sesuai keinginan mereka. Proyek ini lebih seperti wiki terbuka daripada proyek open source standar yang dijaga.
Lihat Panduan Kontribusi untuk detail lebih lanjut.
Proyek ini menggunakan submodul Git. Ini berarti bahwa Anda harus mengkloningnya secara rekursif jika Anda berencana mengerjakannya:
$ git clone --recurse-submodules https://github.com/Level/leveldown.gitAtau, Anda dapat menginisialisasi submodul di dalam folder yang dikloning:
$ git submodule update --init --recursivenpm version ..git push --follow-tags./prebuilds : npm run download-prebuildsnpm run test-prebuildcanadian-pubnpm publish Dukung kami dengan sumbangan bulanan di Open Collective dan bantu kami melanjutkan pekerjaan kami.
Mit
leveldown dibangun di atas pekerjaan luar biasa dari tim LevelDB dan Snappy dari Google dan kontributor tambahan. LevelDB dan Snappy keduanya dikeluarkan di bawah lisensi BSD baru. Sebagian besar dukungan Windows leveldown berasal dari port Windows LevelDB (diarsipkan) oleh Krzysztof Kowalczyk ( @kjk ). Jika Anda menggunakan leveldown pada Windows, Anda harus mengucapkan terima kasih!