2012-04-06 29 views
22

Mongoose'un koleksiyon başına maksimum bağlantıyı yalnızca açacağını okudum ve bunu değiştirmek için bir seçenek yok.Mongoose aynı anda birden fazla veritabanı isteğine izin veriyor mu?

Bu, yavaş bir mongo sorgusunun sonraki tüm sorguların beklemesini sağlayacağı anlamına mı geliyor?

node.js'deki her şeyin engellemeyi engellediğini biliyorum, ancak yavaş bir sorgulamanın tüm sonraki sorguların yürütülmesini geciktirip geciktirmeyeceğini merak ediyorum. Ve bunu değiştirmenin bir yolu var mı?

cevap

30

Eğer mongoose.connect() yaptığınız varsayılan yöntemi kullanırsanız, yalnızca bir bağlantı kullanır. Bunu aşmak için, birden çok bağlantı oluşturabilir ve daha sonra bu şemayla aynı şemaya işaret eden bir model bağlayabilirsiniz. böylece gibi

: yardımcı

var conn = mongoose.createConnection('mongodb://localhost/test'); 
var conn2 = mongoose.createConnection('mongodb://localhost/test'); 
var model1 = conn.model('Model', Schema); 
var model2 = conn2.model('Model', Schema); 
model1.find({long query}, function() { 
    console.log("this will print out last"); 
}); 
model2.find({short query}, function() { 
    console.log("this will print out first"); 
}); 

Umut.

Güncelleştirme Hey, bu işe yarıyor. Yorumlardan güncelleme yaparak, createConnection kullanarak bir bağlantı havuzu oluşturabilirsiniz. böylece, ben upvotes almaya devam ettik fark - 2012
Bu cevap biraz zamanı geçmiş olabilir Aralık - 2

var conn = mongoose.createConnection('mongodb://localhost/test', {server:{poolSize:2}}); 
var model = conn.model('Model', Schema); 
model.find({long query}, function() { 
    console.log("this will print out last"); 
}); 
model.find({short query}, function() { 
    console.log("this will print out first"); 
}); 

Güncelleme: Size eşzamanlı aynı modelden birden fazla sorgu yapalım Güncellemeyi düşündüm. Şimdi mongoose saran mongodb-native sürücüsü, varsayılan bağlantı havuzu boyutu 5'tir, bu yüzden muhtemelen mongoose'da açıkça belirtmeniz gerekmez.

+0

Tek bir bağlantı kullandığını biliyorum, ancak yalnızca bir bağlantı kullandığımda ne olur ve bir mongodb sorgusu hemen başka bir ağır mongodb sorgusu izler? Bahsettiğim ilk sorgu, bahsettiğim ikinci sorguya kadar bekleyecek mi? – alexk

+0

Aha, sanırım bana bekleyeceğini ve böylece farklı bir model kullanmam gerektiğini söylüyorsun. Teşekkürler görüyorum. – alexk

+0

Yep. Tek bir bağlantı ile denerseniz, sorgulanan sırayla yazdıracaktır. –

İlgili konular