MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Meteor - Tại sao tôi nên sử dụng this.userId thay vì Meteor.userId () bất cứ khi nào có thể?

Câu hỏi của bạn dường như liên quan đến Meteor.userId()Meteor.user() . Phần nội dung câu hỏi dường như hỏi về cái trước trong khi dòng chủ đề hỏi về cái sau. Tôi sẽ cố gắng giải quyết cả hai.

  1. Trên máy chủ, trong hàm xuất bản, gọi Meteor.userId() hoặc Meteor.user() gây ra lỗi . Thay vào đó, hãy sử dụng this.userId hoặc Meteor.users.findOne(this.userId) , tương ứng. Tuy nhiên, lưu ý rằng chức năng xuất bản chỉ được gọi khi khách hàng đăng ký. Nếu bạn muốn ấn bản thay đổi khi bản ghi người dùng thay đổi, bạn cần phải observe() con trỏ được trả về bởi Meteor.users.find(this.userId) và thực hiện hành động thích hợp khi hồ sơ thay đổi.
  2. Trên máy chủ, trong khi một lệnh gọi phương thức đang được xử lý, Meteor.userId()Meteor.user() sẽ tương ứng với ID của người dùng đang gọi và bản ghi của họ, tương ứng. Tuy nhiên, hãy lưu ý rằng các lệnh gọi đến Meteor.user() sẽ dẫn đến truy vấn DB vì chúng là về cơ bản tương đương với Meteor.users.findOne(Meteor.userId()) .

    Trực tiếp trong cuộc gọi phương thức, bạn cũng có thể sử dụng this.userId thay vì Meteor.userId() , nhưng bạn không chắc sẽ thấy sự khác biệt về hiệu suất đáng kể. Khi máy chủ nhận được lệnh gọi phương thức, nó chạy triển khai phương pháp của bạn với ID của người dùng (và một số thông tin khác) được lưu trữ trong một slot cụ thể trên sợi. Meteor.userId() chỉ lấy ID từ khe cắm trên sợi quang hiện tại. Điều đó sẽ nhanh chóng.

    Nói chung, việc cấu trúc lại mã sử dụng Meteor.userId() sẽ dễ dàng hơn than this.userId vì bạn không thể sử dụng this.userId bên ngoài thân phương thức (ví dụ:this sẽ không có thuộc tính 'userId' trong một hàm mà bạn gọi từ thân phương thức) và bạn không thể sử dụng this.userId trên máy khách.

  3. Trên máy khách, Meteor.userId()Meteor.user() sẽ không tạo ra lỗi và this.userId sẽ không làm việc. Cuộc gọi đến Meteor.user() về cơ bản tương đương với Meteor.users.findOne(Meteor.userId()) , nhưng vì điều này tương ứng với một truy vấn mini-mongo DB, nên hiệu suất có thể không phải là vấn đề đáng lo ngại. Tuy nhiên, vì lý do bảo mật, đối tượng được trả về bởi Meteor.user() có thể không đầy đủ (đặc biệt nếu autopublish gói chưa được cài đặt).


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Các cụm MongoDB hiệu suất cao trên Amazon EC2

  2. Trong mongodb biết chỉ số của phần tử mảng khớp với toán tử $ in?

  3. Làm cách nào để truy vấn trực tiếp trường lồng nhau mà không chỉ định trường mẹ?

  4. Xóa phần tử khỏi mongodb mảng lồng nhau

  5. Mongoose - tìm tin nhắn cuối cùng từ mỗi người dùng