2015-01-25 13 views
7

Trường hợp sử dụng: ứng dụng tôi đã tạo trên app.foo.com và phiên bản kính thiên văn trên community.foo.com, trên các máy chủ ứng dụng riêng biệt. Bộ sưu tập duy nhất họ chia sẻ là users. Tôi sẽ cung cấp cùng một url mongo và url mở cho cả hai ứng dụng và đảm bảo rằng không phải là users, tên bộ sưu tập không trùng lặp giữa hai ứng dụng.Tôi có thể sử dụng cùng một DB cho nhiều ứng dụng Meteor không?

Điều này có hiệu quả không? Bất kỳ mối quan tâm hiệu suất nào?

+0

có thể trùng lặp của [Tôi có thể nhận được nhiều ứng dụng Meteor khác nhau đang chạy một cách tương tác khỏi cùng một cá thể MongoDB không?] (Http: // stackoverflow.com/questions/28012989/can-i-get-nhiều-khác nhau-meteor-apps-run-phản-off-the-cùng-mongodb) –

+2

@ DavidVeldon, tôi không nghĩ rằng đó là một bản sao, anh chỉ muốn một phần của cơ sở dữ liệu được chia sẻ. –

Trả lời

6

Vấn đề với điều này là bạn phải chia sẻ tên bộ sưu tập.

Nếu bạn sử dụng cơ sở dữ liệu của bạn, bạn cũng được bảo hiểm chống lại Kính viễn vọng đột nhiên sử dụng tên bộ sưu tập mà ứng dụng khác của bạn sử dụng trên phiên bản tương lai.

Những gì bạn có thể làm là chỉ chia sẻ bộ sưu tập users nếu bạn muốn.

mã phía máy chủ (không cần thiết trên máy khách)

Accounts.connection = DDP.connect("https://<telescope app url>"); 

Meteor.users = new Mongo.Collection("users", { 
    _preventAutopublish: true, 
    connection: Accounts.connection 
}); 

Hoặc trực tiếp hơn (không thích hợp hơn nếu bạn cho phép đăng nhập OAuth)

var database = new MongoInternals.RemoteCollectionDriver("<mongo url of telescope app>"); 
Meteor.users = new Mongo.Collection("users", { _driver: database }); 

Vì vậy, ứng dụng này ngay bây giờ sử dụng kính thiên văn bộ sưu tập của người dùng ứng dụng.

4

Sẽ không có vấn đề gì với điều này cả. Ví dụ, đây là trường hợp sử dụng phổ biến để có ứng dụng hướng về người dùng và ứng dụng quản trị, cả hai đều sử dụng cùng một db.

+0

Đúng. Không vấn đề gì. Bạn có thể xuất bản và đăng ký như bình thường. Các opo mongo sẽ giữ cho tất cả các ứng dụng đồng bộ. – benstr

1

này không nên được thực hiện ở cấp cơ sở dữ liệu:

Khi bất kỳ của hai ứng dụng phát triển, họ có thể phá vỡ bản thân hoặc người khác.

Đó là loại tính năng thuộc về lớp API hoặc dịch vụ riêng biệt. Bằng cách này, bạn có một dịch vụ nhận dạng người dùng xử lý xác thực (thậm chí là tên miền chéo) và dữ liệu người dùng cơ bản và để lại từng thông tin người dùng dành riêng cho ứng dụng trong phần riêng của hệ sinh thái của bạn. Không có nguy cơ bị khủng hoảng.

tôi có thể đề nghị một vài ví dụ:

  • căn cứ hỏa lực
  • Parse
  • Hull.io (từ chối trách nhiệm: Tôi là một người sáng lập)
  • Auth0
  • LoginRadius

Hầu hết trong số này có libs phía máy khách mà bạn sử dụng để xử lý xác thực và chỉ cần vượt qua sao lưu ID người dùng hiện đã đăng nhập vào ứng dụng của bạn.

Một số người cũng đề nghị có một ứng dụng là Sư Phụ, và chứng thực người dùng, sau đó nói với các dịch vụ của những người đã đăng nhập, vì vậy bạn có thể lấy dữ liệu từ ứng dụng khác của bạn (ở thân tàu chúng tôi gọi đây là Mang Người dùng của riêng bạn)

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