Meteor được định cấu hình để kết nối với cơ sở dữ liệu mongo bên ngoài . Bạn đã đóng gói mongo trên một ứng dụng phát triển cục bộ nhưng đó chỉ là sự thoải mái và dễ dàng tích hợp.
Trong quá trình sản xuất, bạn sẽ luôn phải kết nối Meteor với phiên bản Mongo đang chạy của mình bằng MONGO_URL
biến môi trường
.
Phần thưởng:bạn có thể đặt MONGO_URL
ngay cả trong chế độ nhà phát triển để kết nối với một db cụ thể trong chế độ nhà phát triển. Lưu ý rằng bạn có thể CRUD mọi thứ trên db này, hãy sử dụng cẩn thận.
Dưới mui xe Meteor sử dụng trình điều khiển nút mongo. Về cơ bản, bạn có thể sử dụng tất cả API của trình điều khiển này ( xem bài đăng này để biết chi tiết về cách gọi các phương thức Mongo bản địa)
Với hệ thống xuất bản / đăng ký của Meteor về cơ bản bạn kiểm soát dữ liệu nào được xuất bản cho khách hàng. Các ấn bản đang chạy mỗi khi dữ liệu thay đổi (tương tự như mẫu người quan sát).
Nếu tất cả khách hàng của bạn đăng ký dữ liệu của một bộ sưu tập, họ sẽ nhận được các bản cập nhật sau khi bộ sưu tập cập nhật. Và bây giờ đến với tính năng mong muốn nhất của bạn:tính năng này cũng hoạt động nếu dữ liệu này được cập nhật bởi một số nguồn bên ngoài.
Nó cũng hoạt động với khoảng thời gian cập nhật rất nhanh. Tôi đã làm việc trong một dự án gần đây trong đó một lượng lớn dữ liệu đã được cập nhật thông qua python trên bộ sưu tập Mongo-DB. Ứng dụng Meteor đã lắng nghe nó và hiển thị dữ liệu cho khách hàng trong "thời gian thực" (hoặc những gì người dùng coi là thời gian thực).
Tuy nhiên, có một số cạm bẫy và bạn nên biết trước về chúng.
-
Meteor tạo tài liệu bằng
_id
thuộc loại chuỗi chứ không phảiMongo.ObjectID
. Tuy nhiên, nó có khả năng đọc và ghi nó nếu bạn sử dụng đúng cách . -
Meteor kết thúc bộ sưu tập bằng một API riêng tích hợp bộ sưu tập tốt nhất với các sợi
fibers
của nó môi trường dựa trên. Nếu bạn cần sử dụng thêm chức năng, vui lòng đọc tại đây và tại đây . -
Con trỏ trả về hoạt động hơi khác một chút nhưng như với Bộ sưu tập, cũng có tất cả các chức năng gốc khả dụng nếu bạn nhận được con trỏ từ
rawCollection
-
Kiểm tra kỹ các loại dữ liệu bạn sử dụng trên bộ sưu tập của mình. Ví dụ:gắn với các loại Ngày giống nhau (như ISODate) để không có lỗi ngoài ý muốn sau khi cập nhật. Ngoài ra còn có bản sao của Meteor với
mongoose
được đặt tên làsimpl-schema
( gói npm ) là một cách tốt để giữ cấu trúc trong bộ sưu tập của bạn.
Tóm lại, nếu bạn xem xét hầu hết các tài liệu hướng dẫn Meteor và API, bạn nên đi đúng hướng vì việc tích hợp các bộ sưu tập được cập nhật bên ngoài thường chạy rất tốt và chủ yếu là hiểu hệ thống pub / sub để làm cho nó chạy.
Chỉnh sửa:
Có, nhưng bạn cần biết về một truy vấn khác. Nếu tài liệu (được tạo bên ngoài) có giá trị sau:
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c") }
Sau đó, bạn phải thay đổi truy vấn (Meteor) của mình từ
collection.findOne("4ecc05e55dd98a436ddcc47c") // returns undefined
đến
collection.findOne({ "_id" : new Mongo.ObjectID("4ecc05e55dd98a436ddcc47c") }) // returns { _id: ObjectID { _str: '4ecc05e55dd98a436ddcc47c' } }
Cùng một khuôn mẫu hoạt động để tạo tài liệu. Thay vì
collection.insert({ foo:'bar' })
bạn chuyển một ObjectID mới được tạo:
collection.insert({ foo:'bar', _id: new Mongo.ObjectID() })
Nếu bạn tạo tài liệu trong Meteor bằng phương pháp trên, bạn không cần phải lo lắng về _id
là một chuỗi.
Bên cạnh đó, tài liệu phải như vậy (xem cầu định dạng dữ liệu ). Tuy nhiên, nếu có một ngoại lệ mà bạn thấy chưa được đề cập ở đây, vui lòng bình luận vì điều này cũng có thể quan trọng đối với những người dùng khác.