Modern, kullanıcı dostu ve güvenilir bir JSON veritabanı modülü.
- 🚀 Basit ve Kullanıcı Dostu: Minimalist API ile hızlı başlangıç
- 💾 Otomatik Kaydetme: Varsayılan olarak her işlemde otomatik kayıt
- 🔗 Nokta Notasyonu: İç içe nesneler için kolay erişim (
user.settings.theme) - 📦 Array Desteği:
push,filter,find,mapgibi array metodları - 🔢 Increment/Decrement: Sayısal değerler için kolay artırma/azaltma
- 📝 TypeScript Desteği: Tam TypeScript tanımlamaları dahil
- 🎯 Sıfır Bağımlılık: Harici bağımlılık gerektirmez
- ⚡ Hafif: Minimal dosya boyutu
- 🔒 Güvenli: Hata yönetimi ve veri doğrulama
npm install dataraveya
yarn add dataraconst Datara = require('datara');
// Veritabanı oluştur
const db = new Datara('./mydb.json');
// Veri kaydet
db.set('name', 'Datara');
db.set('version', '1.0.0');
// Veri oku
console.log(db.get('name')); // 'Datara'
// İç içe nesneler
db.set('user.name', 'devraikou');
db.set('user.age', 25);
console.log(db.get('user')); // { name: 'devraikou', age: 25 }const Datara = require('datara');
// Temel kullanım
const db = new Datara('./database.json');
// Opsiyonlarla birlikte
const db = new Datara('./database.json', {
autoSave: true, // Her işlemde otomatik kaydet (varsayılan: true)
pretty: true, // JSON'u güzel formatla (varsayılan: true)
indentSize: 2 // Girinti boyutu (varsayılan: 2)
});Veritabanına veri kaydetir.
db.set('username', 'devraikou');
db.set('score', 100);
db.set('isActive', true);
// İç içe nesneler için nokta notasyonu
db.set('user.profile.name', 'Ali');
db.set('settings.theme.color', 'dark');Veritabanından veri okur.
const username = db.get('username'); // 'devraikou'
const score = db.get('score'); // 100
// Varsayılan değer
const lang = db.get('language', 'tr'); // 'tr' (eğer yoksa)
// Tüm veriyi al
const allData = db.get(); // Tüm veritabanıAnahtarın var olup olmadığını kontrol eder.
db.has('username'); // true
db.has('nonexistent'); // falseAnahtarı siler.
db.delete('username'); // true
db.delete('nonexistent'); // falseArray'e eleman ekler.
db.set('todos', []);
db.push('todos', { id: 1, text: 'Görev 1', done: false });
db.push('todos', { id: 2, text: 'Görev 2', done: true });Array elemanlarını filtreler.
const incompleteTodos = db.filter('todos', todo => !todo.done);Array'de eleman arar.
const todo = db.find('todos', t => t.id === 1);Array elemanlarını dönüştürür.
const todoTexts = db.map('todos', todo => todo.text);Sayısal değeri artırır.
db.set('views', 0);
db.increment('views'); // 1
db.increment('views', 5); // 6Sayısal değeri azaltır.
db.decrement('views'); // 5
db.decrement('views', 3); // 2Tüm anahtarları döndürür.
const allKeys = db.keys();
const userKeys = db.keys('user'); // 'user' ile başlayanlarTüm değerleri döndürür.
const allValues = db.values();Üst seviye anahtar sayısını döndürür.
const keyCount = db.size();Tüm veritabanını temizler.
db.clear();Veritabanını manuel olarak kaydeder (autoSave: false ise).
db.save();Veritabanını dosyadan yeniden yükler.
db.reload();Tüm veritabanını JSON olarak döndürür.
const data = db.export();
console.log(data);Veriyi veritabanına aktarır.
// Mevcut veriyi değiştir
db.import({ name: 'Yeni Veri' });
// Mevcut veriyle birleştir
db.import({ extra: 'value' }, true);const db = new Datara('./users.json');
// Kullanıcı ekleme
db.set('users', []);
db.push('users', {
id: 1,
username: 'devraikou',
email: 'dev@example.com',
role: 'admin'
});
// Kullanıcı bulma
const user = db.find('users', u => u.username === 'devraikou');
// Admin kullanıcıları filtreleme
const admins = db.filter('users', u => u.role === 'admin');const db = new Datara('./stats.json');
// Görüntülenme sayacı
db.set('pageViews', 0);
db.increment('pageViews'); // Her ziyarette
// İndirme sayacı
db.set('downloads', 0);
db.increment('downloads', 1); // Her indirmedeconst db = new Datara('./config.json');
// Varsayılan ayarlar
db.set('app.name', 'My App');
db.set('app.version', '1.0.0');
db.set('settings.theme', 'light');
db.set('settings.language', 'tr');
db.set('settings.notifications.email', true);
db.set('settings.notifications.push', false);
// Ayarları okuma
const theme = db.get('settings.theme');
const emailNotif = db.get('settings.notifications.email');const db = new Datara('./cache.json');
// Veri önbellekleme
function getCachedData(key) {
if (db.has(key)) {
return db.get(key);
}
const data = fetchDataFromAPI(key);
db.set(key, data);
return data;
}
// Önbelleği temizleme
function clearCache() {
db.clear();
}const db = new Datara('./todos.json');
// Görev ekleme
function addTodo(text) {
const todos = db.get('todos', []);
const newTodo = {
id: Date.now(),
text: text,
completed: false,
createdAt: new Date().toISOString()
};
db.push('todos', newTodo);
return newTodo;
}
// Görev tamamlama
function completeTodo(id) {
const todos = db.get('todos', []);
const updated = todos.map(todo =>
todo.id === id ? { ...todo, completed: true } : todo
);
db.set('todos', updated);
}
// Tamamlanmamış görevler
function getIncompleteTodos() {
return db.filter('todos', todo => !todo.completed);
}| Metod | Parametreler | Dönüş | Açıklama |
|---|---|---|---|
set(key, value) |
key: string, value: any | any | Veri kaydet |
get(key, default) |
key?: string, default?: any | any | Veri oku |
has(key) |
key: string | boolean | Anahtar kontrolü |
delete(key) |
key: string | boolean | Veri sil |
push(key, value) |
key: string, value: any | number | Array'e ekle |
filter(key, callback) |
key: string, callback: function | array | Array filtrele |
find(key, callback) |
key: string, callback: function | any | Array'de bul |
map(key, callback) |
key: string, callback: function | array | Array dönüştür |
increment(key, amount) |
key: string, amount?: number | number | Sayı artır |
decrement(key, amount) |
key: string, amount?: number | number | Sayı azalt |
keys(prefix) |
prefix?: string | string[] | Anahtarları listele |
values() |
- | any[] | Değerleri listele |
size() |
- | number | Anahtar sayısı |
clear() |
- | boolean | Veritabanını temizle |
save() |
- | boolean | Manuel kaydet |
reload() |
- | boolean | Yeniden yükle |
export() |
- | object | Dışa aktar |
import(data, merge) |
data: object, merge?: boolean | boolean | İçe aktar |
npm testMIT License - Copyright (c) 2025 devraikou
Katkılarınızı bekliyoruz! Pull request göndermekten çekinmeyin.
- Bu repo'yu fork edin
- Feature branch oluşturun (
git checkout -b feature/amazing-feature) - Değişikliklerinizi commit edin (
git commit -m 'feat: Add amazing feature') - Branch'inizi push edin (
git push origin feature/amazing-feature) - Pull Request açın
Sorularınız için issue açabilirsiniz.
Datara'yı kullandığınız için teşekkür ederiz! ⭐ vermeyi unutmayın.
Made with ❤️ by devraikou