حل محله 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 .
تشحن حزمة leveldown NPM مع ثنائيات تم إنشاؤها مسبقًا للمنصات الشهيرة 64 بت وكذلك ARM و M1 و Android و Alpine (MUSL) ومن المعروف أنها تعمل على:
عند تثبيت leveldown ، سيقوم node-gyp-build بالتحقق مما إذا كان هناك ثنائي متوافق وتراجع إلى خطوة ترجمة إذا لم يكن كذلك. في هذه الحالة ، ستحتاج إلى تثبيت غير صالح node-gyp .
إذا كنت لا ترغب في استخدام الثنائي المسبق للنظام الأساسي الذي تقوم بتثبيته ، فحدد علامة --build-from-source عند التثبيت. واحد من:
npm install --build-from-source
npm install leveldown --build-from-source
إذا كنت تعمل على leveldown نفسها وتريد إعادة تجميع رمز C ++ ، فتشغيل npm run rebuild .
leveldown > = 5. يمكن التحقق من ذلك عن طريق تشغيل npm ls leveldown .leveldown إلى> = 5.3.0 أو الاستخدام --build-from-source .--build-from-source . لم يعد هذا هو الحال.nodejs-mobile Fork. إذا كنت ترقية: يرجى الاطلاع UPGRADING.md .
db = leveldown(location) إرجاع مثيل leveldown جديد. location عبارة عن سلسلة تشير إلى موقع LevelDB الذي سيتم فتحه.
db.open([options, ]callback) افتح المتجر. سيتم استدعاء وظيفة callback دون أي وسيط عندما يتم فتح قاعدة البيانات بنجاح ، أو مع وسيطة error واحدة إذا فشلت العملية المفتوحة لأي سبب من الأسباب.
options قد تحتوي وسيطة options الاختيارية على:
createIfMissing (Boolean ، افتراضي: true ): إذا كان true ، فسيقوم بتهيئة قاعدة بيانات فارغة في الموقع المحدد إذا لم يكن هناك أحد بالفعل. إذا لم تكن قاعدة بيانات false وقاعدة بيانات ، فستتلقى خطأ في رد الاتصال open() ولن يتم فتح قاعدة البيانات الخاصة بك.
errorIfExists (Boolean ، افتراضي: false ): إذا كان true ، فستتلقى خطأ في رد الاتصال open() إذا كانت قاعدة البيانات موجودة في الموقع المحدد.
compression (منطقي ، افتراضي: true ): إذا كان true ، فسيتم تشغيل جميع البيانات القابلة للضغط من خلال خوارزمية ضغط snappy قبل تخزينها. 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 (Boolean ، افتراضي: 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 فارغة ( '' ) أو Buffer.alloc(0) عند جلبها مع asBuffer: true (انظر أدناه).
options قد يحتوي كائن options الاختيارية على:
asBuffer (Boolean ، افتراضي: true ): يستخدم لتحديد ما إذا كان سيتم إرجاع value الإدخال كسلسلة أو مخزن مؤقت. لاحظ أن التحويل من المخزن المؤقت إلى سلسلة يتحمل تكلفة ، لذلك إذا كنت بحاجة إلى سلسلة (ويمكن أن تصبح value بشكل شرعي سلسلة UTF8) ، فيجب عليك إحضارها كواحد مع { asBuffer: false } وستتجنب تكلفة التحويل هذه.fillCache (Boolean ، افتراضي: true ): Will SlistdB سوف يملأ افتراضيًا ذاكرة التخزين المؤقت 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 (Boolean ، افتراضي: false ) . انظر db.put() للحصول على تفاصيل حول هذا الخيار.
سيتم استدعاء وظيفة callback بدون وسيطات إذا كانت العملية ناجحة أو مع وسيطة error واحدة إذا فشلت العملية لأي سبب من الأسباب.
db.batch(operations[, options], callback) (نموذج الصفيف) قم بإجراء عمليات PUT و/أو 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 سلاسل أو مخازن مؤقتة تمثل المفاتيح في متجر LevelDB.
سيتم استدعاء وظيفة callback error واحد إذا فشلت العملية لأي سبب من الأسباب. إذا نجحت ، ستكون الحجة الأولى null وستكون الحجة الثانية هي الحجم التقريبي كرقم.
db.compactRange(start, end, callback) compactRange() هي طريقة مثيل على كائن قاعدة بيانات موجود. تستخدم لتشغيل ضغط قاعدة البيانات يدويًا في النطاق [start..end) .
قد تكون معلمات start end سلاسل أو مخازن مؤقتة تمثل المفاتيح في متجر 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 . هناك مكسب صغير للكفاءة إذا كنت لا تهتم في النهاية بماهية المفاتيح لأنها لا تحتاج إلى تحويلها ونسخها إلى JavaScript.values (منطقية ، افتراضي: true ) : ما إذا كان لإرجاع قيمة كل إدخال. إذا تم ضبطها على false ، فإن المكالمات إلى iterator.next(callback) ستؤدي إلى قيم بقيمة undefined 1 .keyAsBuffer (Boolean ، افتراضي: true ) : ما إذا كان لإرجاع مفتاح كل إدخال كخزانة أو سلسلة. يتحمل التحويل من المخزن المؤقت إلى سلسلة تكلفة ، لذا إذا كنت بحاجة إلى سلسلة (ويمكن أن يصبح key بشكل شرعي سلسلة UTF8) ، فيجب عليك إحضارها كواحد.valueAsBuffer (منطقية ، افتراضي: true ) : ما إذا كان يجب إرجاع قيمة كل إدخال كخزانة أو سلسلة.fillCache (Boolean ، افتراضي: false ): ما إذا كان ينبغي ملء ذاكرة التخزين المؤقت LRU من LRUDB بقراءة البيانات. 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 Loop يدعو تلقائيا 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:
إذا تعذر فتح DB ، فيمكنك محاولة استدعاء هذه الطريقة لإحياء أكبر قدر ممكن من محتويات قاعدة البيانات. قد تضيع بعض البيانات ، لذا كن حذرًا عند استدعاء هذه الوظيفة على قاعدة بيانات تحتوي على معلومات مهمة.
ستجد معلومات حول عملية الإصلاح في ملف السجل داخل دليل المتجر.
يمكن أيضًا استخدام repair() لإجراء ضغط من سجلات LevelDB إلى ملفات الجدول.
سيتم استدعاء رد الاتصال عند اكتمال عملية الإصلاح ، مع وجود وسيطة error محتملة.
لا يتتبع leveldown حاليًا حالة مثيل LevelDB الأساسي. هذا يعني أن الاتصال open() على قاعدة بيانات مفتوحة بالفعل قد يؤدي إلى خطأ. وبالمثل ، قد يؤدي الاتصال بأي عملية أخرى على قاعدة بيانات غير مفتوحة إلى خطأ.
يتتبع levelup حاليًا ويدير الحالة وسيمنع إرسال العمليات خارج الدولة إلى leveldown . إذا كنت تستخدم leveldown مباشرة ، فيجب عليك تتبع وإدارة الحالة بنفسك.
يعرض leveldown ميزة من LevelDB تسمى لقطات. هذا يعني أنه عندما تفعل على سبيل المثال createReadStream و createWriteStream في نفس الوقت ، فإن أي بيانات تم تعديلها بواسطة دفق الكتابة لن تؤثر على البيانات المنبعثة من دفق القراءة. بمعنى آخر ، تلتقط لقطة LevelDB أحدث حالة في الوقت الذي تم فيه إنشاء اللقطة ، مما يتيح اللقطة من التكرار أو قراءة البيانات دون رؤية أي كتابة لاحقة. أي قراءة لم يتم تنفيذها على لقطة ستستخدم ضمنيًا أحدث حالة.
اهلا وسهلا بكم لفتح مشكلة على مستودع جيثب إذا كان لديك سؤال.
تتضمن قنوات الدعم في الماضي ولم تعد نشطة قناة ##leveldb IRC على Freenode و Node.js LevelDB Google Group.
Level/leveldown هو مشروع مفتوح المصدر . هذا يعني أن:
يتم إعطاء الأفراد الذين يقدمون مساهمات مهمة وقيمة الوصول إلى المشروع للمساهمة كما يرون مناسبة. يشبه هذا المشروع ويكي مفتوح أكثر من مشروع المصدر المفتوح القياسي.
انظر دليل المساهمة لمزيد من التفاصيل.
يستخدم هذا المشروع الجهاز الفرعي GIT. هذا يعني أنه يجب عليك استنساخه بشكل متكرر إذا كنت تخطط للعمل عليه:
$ git clone --recurse-submodules https://github.com/Level/leveldown.gitبدلاً من ذلك ، يمكنك تهيئة العارض الفرعي داخل المجلد المستنسخ:
$ git submodule update --init --recursivenpm version ..git push --follow-tags./prebuilds : npm run download-prebuildsnpm run test-prebuildcanadian-pubnpm publish دعمنا بتبرع شهري على Open Collective ومساعدتنا على مواصلة عملنا.
معهد ماساتشوستس للتكنولوجيا
يعتمد leveldown على العمل الممتاز لفرق LevelDB وفرق Snappy من Google والمساهمين الإضافيين. يتم إصدار LevelDB و Snappy كلاهما بموجب ترخيص BSD الجديد. يأتي جزء كبير من دعم Windows leveldown من منفذ Windows LevelDB (المؤرشفة) بواسطة Krzysztof Kowalczyk ( @kjk ). إذا كنت تستخدم leveldown على Windows ، فيجب أن تقدم له شكرك!