Mục tiêu cuối cùng của tôi là có CUSTOM_FIELD_I_FREAKEN_WANT_TO_PUBLISH
có sẵn cho các mẫu qua {{currentUser}}
nếu chúng được đăng nhập, nhưng Meteor không gửi tất cả các trường từ bộ sưu tập của người dùng.Trường tùy chỉnh trên Meteor.users không được xuất bản
Trong Server:
Meteor.publish('userdata', function() {
this.ready(); // do I really even need to do this?
//return Meteor.users.find(); //This STILL doesn't work
return Meteor.users.findOne({_id: this.userId});
});
Trong Chủ đầu tư:
var s = Meteor.subscribe('userdata', function() {
console.log('userdata available');
console.log('s.ready: '+s.ready())
});
console.log('s.ready: '+s.ready())
tôi có thể xác minh rằng có những lĩnh vực trong bộ sưu tập bằng cách kết nối với dụ Mongo trực tiếp và gõ: db.users.find()
:
{
"_id" : "N2M7Zp265vkbTBTFF",
"createdAt" : ISODate("2013-10-15T03:29:53.155Z"),
"CUSTOM_FIELD_I_FREAKEN_WANT_TO_PUBLISH" : "P4GRrQMixEZducmuo",
"profile" : {
"name" : "Jonathan Dumaine",
...,
},
"services" : {
"facebook" : {
....,
}
}
}
Sau khi xác minh rằng đăng ký đã sẵn sàng trong ứng dụng khách, chỉ có f ield trên bộ sưu tập của người dùng là _id
và _profile
. Các trường bổ sung không hiển thị trong ứng dụng khách (thông qua bảng điều khiển Meteor.users.find().fetch()
) cũng như không được xác định khi được truy cập thông qua các mẫu.
Đây có phải là lỗi không? Tôi có làm điều gì sai?
Oh đó là một điểm rất tốt, nhưng trong trường hợp này nó vẫn sẽ không hoạt động vì không có gì phản ứng trong chức năng xuất bản, phải không? Nó sẽ phải được chuyển đổi với Meteor.user() thay vì this.userId. Và nếu phản ứng là bên trong chức năng xuất bản, không phải là không cần thiết phải đăng ký bên trong một autorun? : | –
Tôi personnaly sử dụng loại giải pháp (được mô tả trong tài liệu thiên thạch chính thức) và nó hoạt động tốt cho tôi. Nếu bạn cần cập nhật thông tin người dùng từ ứng dụng khách, bạn cần phải thêm Meteor.users.allow/deny – Rebolon
Từ tài liệu "Tuy nhiên, nếu người dùng đã đăng nhập thay đổi, chức năng xuất bản sẽ chạy lại với giá trị mới." Vì vậy, câu trả lời này sẽ hoạt động nhưng một số thông tin không chính xác. Việc xuất bản sẽ chạy lại bất cứ khi nào người dùng thay đổi để khách hàng sẽ nhận được dữ liệu mới. Một dòng xuất bản và một dòng đăng ký sẽ hoạt động tốt. – user728291