2012-10-22 35 views
5

Tôi muốn Facebook accessToken được lưu trữ trong tài liệu của người dùng của tôi trên máy khách. Theo sau meteor documentation, tôi chỉ cần thêm cuộc gọi xuất bản mới.Cách thêm trường vào bộ sưu tập Meteor.users

Trong server.js:

Meteor.publish("access_token", function() { 
    return Meteor.users().find(
    { _id : Meteor.userId() }, 
    {'services.facebook.accessToken': 1} 
); 
}); 

Trong client.js:

Meteor.subscribe("access_token"); 

Alright, đây là nơi tôi bị lạc. Nếu accessToken chỉ hiển thị trong bộ sưu tập Meteor.users bây giờ cho người dùng đã đăng nhập? Giống như:

var user = Meteor.users.findOne({ _id : Meteor.userId() }); 
console.log(user); // includes services.facebook.accessToken now 

Rõ ràng, tôi đã thử ở trên và accessToken không hiển thị. Có, tôi đã xác nhận rằng tài liệu mongo chứa services.facebook.

Vì vậy, ... tôi có tạo bộ sưu tập khách hàng mới và bằng cách nào đó móc nó lên bản xuất bản mới không? Làm thế nào để tôi có được accessToken?

Trả lời

9

bạn nên sử dụng "cánh đồng" từ khóa

Meteor.users.find({ _id: this.userId }, 
    { fields: { the-extra-fields-that-you-want-go-here: 1 } } 
); 

http://docs.meteor.com/#fieldspecifiers

+0

Trong thực tế, bạn nên loại bỏ các dấu ngoặc kép, điều này gây ra một lỗi . Câu trả lời đúng nếu tôi không nhầm là: 'Meteor.users(). Tìm thấy ({_id: this.userId}, {fields: {extra_fields: 1}} ); ' – Mercutionario

+1

bạn nói đúng. gõ sai ~~~ – crapthings

4

Bạn có thể xuất bản lĩnh vực mà bạn muốn:

Meteor.publish(null, function() { 
    Meteor.users.find({}, {fields: {profile: 1, username: 1, ...}}) 
} 
+1

Điều này không phải lúc nào cũng đúng. Nếu bạn đang trưng bày bộ sưu tập người dùng (plugin người dùng trực tuyến), Meteor.users() sẽ tìm tất cả người dùng trực tuyến với users.find, ví dụ. –

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