Trình trợ giúp mẫu hoạt động, có nghĩa là chúng tự cập nhật khi trạng thái ứng dụng thay đổi hoặc dữ liệu mới xuất hiện. Trong trường hợp của bạn, trình trợ giúp được gọi ngay lập tức khi mẫu được hiển thị và trước Meteor.users
bộ sưu tập được lấp đầy. Do đó, .findOne()
phương thức trả về không xác định. Nó sẽ được sửa trong lần vượt qua thứ hai sau khi dữ liệu mới đến.
Cách khắc phục đơn giản ở đây là kiểm tra xem dữ liệu có bên trong trình trợ giúp hay không:
myClub: function(){
var currenUserId = Meteor.userId();
var user = Meteor.users.findOne({_id: currenUserId});
if(!user) return 'NO DATA';
return user.role;
},
Trong cuộc sống thực, bạn có thể muốn đợi dữ liệu cơ bản được tải trước khi hiển thị mẫu. Điều đó thường được thực hiện ở cấp bộ điều khiển.