2012-08-11 24 views
6

Tôi đang sử dụng Mongoose 3 và cách rõ ràng nhất để kết nối với cơ sở dữ liệu đượcKết nối/mô hình Mongoose: Cần luôn chạy khi mở?

conn = mongoose.createConnection(...) 
conn.on("open", ...) 

Câu hỏi là, tôi cần phải xác định tất cả mô hình của tôi trong khi gọi lại mở? Nếu điều đó là như vậy, tôi sẽ phải tạo một initMongoose.coffee trông giống như

# initMongoose.coffee 

mongoose = require "mongoose" 
module.exports = mongoose.createConnection ... 

# modelExample.coffee 

conn = require "./initDatabase" 
conn.on "open", -> 
    ... define model? 
    modeule.exports = model # I think this does not work? 

Tôi nghĩ rằng tôi đọc ở đâu đó trong tài liệu Node rằng module không thể được định nghĩa trong một callback như vậy?


Kể từ khi tôi chỉ sử dụng 1 kết nối, tôi nghĩ rằng tôi có thể sử dụng

mongoose.connect ... 

nào doesnt chấp nhận bất kỳ callbacks vì vậy tôi giả sử là đồng bộ? Tôi có thể xác định tất cả các mô hình của mình và do đó truy vấn ngay sau connect() không? Nó hoạt động vào lúc này, nhưng nó có thể là do nó đủ nhanh.

+0

Cảm ơn bạn đã đặt câu hỏi. Tôi thấy tất cả các loại ví dụ không đặt nó trong gọi lại và tôi đã bối rối! Ngoài ra tôi đã tự hỏi làm thế nào tôi sẽ cấu trúc chương trình nếu tôi phải đặt nó trong gọi lại. – huggie

Trả lời

16

Mongoose đệm các lệnh cho đến khi kết thúc kết nối, vì vậy bạn có thể xử lý nó giống như nó đồng bộ và xác định mô hình của bạn và bắt đầu sử dụng thư viện bất cứ khi nào bạn muốn; chỉ một khi bạn muốn bắt đầu thực sự chèn hoặc lấy dữ liệu, bạn cần phải thực hiện kết nối.

+0

Erm phần thứ 2 của bạn dường như mâu thuẫn với số 1. Vì vậy, tôi có thể xác định các mô hình ngay sau khi kết nối nhưng tôi có thể làm tương tự với chèn? –

+0

Có; vấn đề là, trong khi kết nối không đồng bộ, bạn không phải đối xử với nó như vậy, như Mongoose sẽ phát hiện ra rằng nó không kết thúc kết nối và đệm các chèn cho đến khi nó được thực hiện xong. –

+0

@MichelleTilley nguồn? – CodyBugstein

Các vấn đề liên quan