2015-02-20 5 views
5

Veritabanındaki iki tahsilatı okuyup yazacak şekilde modellemek için node.js uygulamasında Mongoose kullanıyorum. Yalnızca benim uygulamamdan okunacak iki tane daha koleksiyon var (bu koleksiyonlar için model, başka bir uygulamada saklanacak ve onlara yazılacak).Mongoose şema olmadan salt okunur

Yalnızca mongoose kullanarak iki salt okunur koleksiyona erişmem gerekiyorsa, bu uygulamada da bir şema sürdürmem gerekecek. Şema iki kez korunacağından ve daha sonra tutarsızlığa yol açabileceğinden bunu yapmayı tercih ederim.

Gelincik varsayılan bağlantı Kimin şema koleksiyonundan okumak için Gelincik varsayılan bağlantısını kullanabilirsiniz nasıl bir DBPath (örn mongodb://localhost/dbname),/model tarafından tutulan değildir Verilen

Mongoose.connect(dbPath) 

oluşturulabilir benim uygulamam Yoksa aynı şekilde yerli MongoDB sürücüsünü kullanmalı mıyım?

cevap

9

Koleksiyondan okumak için Mongoose'u kullanıyorsanız, şema tanımını boş bırakabilirsiniz. Eğer modelin herhangi gerekmiyorsa sorgu zincirinde

var Test = mongoose.model('Test', new Schema(), 'test'); 
Test.findOne({name: 'John'}, function(err, doc) { ... }); 

Veya daha iyi performans için

içerir lean(): Eğer test adında salt okunur bir koleksiyonu, böyle bir şey çalışacak vardı Yani eğer

örneğin işlevselliği:

Test.findOne({name: 'John'}).lean().exec(function(err, doc) { ... }); 

Eğer get yöntemi kullanarak doc özelliklerini erişmesi gereken lean() kullanmıyorsanız; örneğin:

doc.get('name') // instead of doc.name 
+0

Modeli bu şekilde kullandığınızda, sonuçta oluşan dokümanın özelliklerinden birine nasıl başvurabilirsiniz? Nokta gösterimi kullanmak bana tanımlanmamış hatalar veriyor. JSON.parse "beklenmedik belirteci" döndürdü – tutley

+1

@tutley Güncellenen yanıtlara bakın. – JohnnyHK