2012-08-31 33 views
13

Được đề xuất trong Mongoose docs rằng tôi có thể kiểm soát luồng bằng cách sử dụng phần mềm trung gian cắm vào móc "init".Mongoose - làm thế nào để khai thác middleware lược đồ vào sự kiện 'init'?

Tuy nhiên, tôi cho đến nay đã thành công chỉ với "lưu" và "xác thực".

Khi tôi làm một cái gì đó như thế này, không phải của các middleware bao giờ được gọi là:

MySchema.post("init", function (next) { console.log("post init") }); 
MySchema.pre("init", function (next) { console.log("pre init") }); 

Tôi có thiếu cái gì?

Trả lời

22

Nó chỉ ra rằng sự kiện/móc "init" không được kích hoạt khi tạo Mô hình mới, nó chỉ được kích hoạt khi tải một mô hình hiện có từ cơ sở dữ liệu. Có vẻ như tôi nên sử dụng móc trước/xác thực thay thế.

+0

điều này vẫn đúng? Tôi dường như nhận được init bài viết của tôi được gọi là sau khi tạo ra ban đầu, như mong đợi. –

2

Tôi đã sử dụng thành công phần mềm trung gian như MySchema.post('init', function() { ... }); với Mongoose, sau đó được thực hiện cho mỗi phiên bản mẫu được tải trong truy vấn find. Lưu ý rằng không có tham số next để gọi bằng phần mềm trung gian này, nó chỉ nên trả lại khi hoàn tất.

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