Chỉ sử dụng một kết nối, nếu bạn sử dụng phương thức mặc định mà bạn mongoose.connect(). Để giải quyết vấn đề này, bạn có thể tạo nhiều kết nối và sau đó buộc một mô hình trỏ đến cùng một lược đồ cho kết nối đó.
Giống như vậy:
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");
});
Hy vọng rằng sẽ giúp.
Cập nhật Xin chào, điều đó có hiệu quả. Cập nhật từ các bình luận, bạn có thể tạo một nhóm kết nối bằng cách sử dụng createConnection. Nó cho phép bạn làm nhiều truy vấn từ cùng một mô hình đồng thời:
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");
});
Cập nhật 2 - Tháng 12 năm 2012
Câu trả lời này có thể hơi lỗi thời bây giờ - Tôi nhận thấy tôi đã tiếp tục để có được upvotes, vì vậy Tôi nghĩ tôi sẽ cập nhật nó. Trình điều khiển gốc mongodb mà mongoose kết thúc tốt đẹp bây giờ có kích thước nhóm kết nối mặc định là 5, vì vậy bạn có thể không cần phải xác định rõ ràng nó trong mongoose.
Nguồn
2012-04-06 06:17:20
Tôi hiểu nó chỉ sử dụng một kết nối, nhưng điều gì sẽ xảy ra khi tôi chỉ sử dụng một kết nối và truy vấn mongodb ngay sau một truy vấn mongodb nặng khác? Liệu truy vấn đầu tiên tôi đề cập có chờ đến khi truy vấn thứ hai tôi đề cập đến kết thúc công việc của mình trên mongodb không? – alexk
Aha, tôi đoán bạn đang nói với tôi rằng nó sẽ chờ đợi, và do đó tôi nên sử dụng một mô hình khác. Tôi hiểu rồi, cảm ơn. – alexk
Đúng. Nếu bạn thử nó chỉ với một kết nối, họ sẽ in theo thứ tự truy vấn. –