Senin bilmediğin bir şey biliyorum: minimongo



  1. Senin bilmediğin bir şey biliyorum: minimongo

MongoDB, popüler ve yaygın olarak kullanılan bir NoSQL veritabanıdır. API’lerini kullanmak istiyor ancak yerel olarak IndexedDB veya LocalStorage ile çalışmayı tercih ediyorsanız, MongoDB API’sinin (küçük) bir bölümünü uygulayan minimongo Node.js modülünü kullanabilirsiniz, ancak diğerlerinin yanı sıra yukarıda belirtilen arka plan depolama seçeneklerini kullanabilirsiniz. diğer.


“Senin Bilmediğin Bir Şeyi Biliyorum”


…Golo Roden ve Philip Ackermann’ın ortak serisidir ve bu seride ikisi düzenli olarak JavaScript ve Node.js için modüller sunar.





Modül başlangıçta aynı adı taşıyan minimongo meteor modülünün bir çatalıdır, ancak onu çeşitli açılardan genişletir ve böylece NPM paket yöneticisi aracılığıyla Node.js’de veya Browserify aracılığıyla tarayıcıda kullanıma izin verir.

Çeşitli kalıcılık seçenekleri


Modül, komutla npm aracılığıyla kurulabilir. npm minimongo’yu kuraracılığıyla her zamanki gibi entegre gerektir(‘minimongo’). Minimongo tarafından desteklenen ve MongoDB API’sinden soyutlanan çeşitli kalıcılık seçenekleri şunlardır:

  1. dizinlenmiş veritabanı,
  2. yerel depolama,
  3. web SQL,
  4. bellekte yerel olarak,
  5. hatta uzak (gerçek) MongoDB kurulumları.
  6. bazı verilerin yerel olarak, bazılarının ise uzaktan depolandığı hibrit bir yaklaşım.
Benzer şekilde, minimongo çeşitli JavaScript nesneleri sağlar (Dizinlenmiş DB, LocalStorageDB, WebSQLDB, BellekDb, Uzak Db Ve HibridDB), gerektiğinde nesneleri başlatabileceğiniz:

'use strict';
let minimongo = require('minimongo');
let MemoryDb = minimongo.MemoryDb;
let db = new MemoryDb();

API, kullanılan veritabanı türünden bağımsız olarak her zaman aynıdır ve belge koleksiyonları (Koleksiyonlar) oluşturmak ve silmek ve içlerindeki belgeler üzerinde olağan CRUD işlemlerini gerçekleştirmek için yöntemler sağlar.


Bir örnek


Aşağıdaki listede basit bir örnek görülebilir: İlk olarak, yeni bir koleksiyon (“kullanıcılar”) oluşturulur ve yöntem aracılığıyla karşılık gelen geri arama işlevinde upsert() iki nesne Maksimum Ve moritz eklendi (yönteme upsert() tek bir nesne eklenecekse dizi yerine tek bir değer de iletilebilir). Ardından (hala uygun geri arama işlevi içinde) aracılığıyla birini bul() ilk nesnesini döndüren bir veritabanı sorgusu formüle eder. Soyadı“Doe” değerini içerir. Oluşturulan kimliğin arka plan nesnesine otomatik olarak atandığını da görebilirsiniz.

let max = {
firstName: 'Max',
lastName: 'Mustermann',
age: 44
};
let moritz = {
firstName: 'Moritz',
lastName: 'Mustermann',
age: 45
};
db.addCollection('users', () => {
db.users.upsert([max, moritz], () =>
{
// Erster Nutzer mit Nachname "Mustermann"
db.users
.findOne({lastName: 'Mustermann'}, {},
(result) => {
console.log(result.firstName); // Max
console.log(result.lastName); // Mustermann
console.log(result._id); // z.B.
// c3f60b7207134c94b5cffeea7ba27db5
},
(error) => {
console.error(error);
}
);
});
});


Öte yandan, tüm kullanıcıların çıktısını almak istiyorsanız, yöntemleri kullanırsınız. keşfetmek() Ve alacak() aşağıdaki listede olduğu gibi:

// Alle Nutzer mit Nachnamen "Mustermann"
db.users
.find({ lastName:'Mustermann' })
.fetch(
(result) => {
console.log(result);
},
(error) => {
console.error(error);
}
);
Veritabanı sorgularını yapılandırma


İsteğe bağlı olarak, döndürülen nesnelerin sıralanması gereken özelliği belirtmek için bir yapılandırma nesnesi kullanılabilir:

// Alle Nutzer mit Nachnamen "Mustermann" sortiert nach Alter
db.users
.find({ lastName:'Mustermann' }, {sort: [['age', 'asc']]}) // 'asc', 'desc'
.fetch(
(result) => {
console.log(result);
console.log(result.length); // 2
},
(error) => {
console.error(error);
}
);

Döndürülen nesnelerin sayısı, tanımlanmış bir sınırla da sınırlandırılabilir:

// Alle Nutzer mit Nachnamen "Mustermann" mit Limit und sortiert nach Alter
db.users
.find({ lastName:'Mustermann' }, {
sort: [['age', 'asc']],
limit: 1
})
.fetch(
(result) => {
console.log(result);
console.log(result.length); // 1
},
(error) => {
console.error(error);
}
);

Yöntem, bir koleksiyondan nesneleri silmek için kullanılır. ayırmak(). Ancak bu, aşağıdaki şekilde belirlenebilen (ve zaten görülebilen) nesne kimliğini gerektirir:

db.users
.findOne({firstName: 'Max'}, {},
(result) => {
db.users.remove(
result._id,
(result) => {
console.log('Removed entry');
db.users
.find({ lastName:'Mustermann' })
.fetch(
(result) => {
console.log(result.length); // 1
},
(error) => {
console.error(error);
}
);
},
(error) => {
console.error(error);
}
);
},
(error) => {
console.error(error);
}
);
Çözüm


Minimongo modülü, çoğunlukla yerel veya kalıcılık seçenekleri olmak üzere çeşitli veritabanları için tek tip bir MongoDB API sağlar. Ancak, API’nin yalnızca bir kısmı gerçekte uygulanmaktadır. Örneğin, projeksiyonlar yoluyla MongoDB’de mümkün olduğu gibi, belirli özellikleri sonuçtan hariç tutmak mümkün değildir. İmleç kavramı da (henüz) uygulanmadı. Bu nedenle, MongoDB’ye gerçek bir istemci tarafı alternatifinden bahsetmek biraz abartı olur. PouchDB gibi diğer JavaScript veritabanı kitaplıkları daha ilgi çekici olabilir.

Ayrıca soru, çatallanma zamanından (Ocak 2014) beri orijinal kitaplıkta yapılan değişikliklerin modülde de ne ölçüde benimsendiği ortaya çıkıyor.

Tüm bunlara rağmen, proje bir bütün olarak ilginç bir yaklaşımı temsil ediyor, çünkü tam olarak birkaç yerel veri tabanı destekleniyor.


()



Haberin Sonu
 
Üst