0
得到這個問題的Tracker.autorun()
方法:MeteorJS跟蹤器:訂閱後如何返回一個值?
Template.registerHelper('getUserName', (userId) => {
let userName = '';
Tracker.autorun((tracker) => {
if (userId) {
let subscription = Meteor.subscribe('userName', userId);
if (subscription.ready()) {
tracker.stop();
let user = Meteor.users.findOne({_id: userId}, {fields: {emails: 0}});
userName = user.services.facebook.name;
}
}
});
return userName;
});
我想從出版返回用戶名,但範圍是棘手的,因爲助手返回一個空字符串,而跟蹤仍在訂閱數據。
我已經試過這樣:
Template.registerHelper('getUserName', (userId) => {
let subscription;
Tracker.autorun((tracker) => {
if (userId) {
subscription = Meteor.subscribe('userName', userId);
}
});
if (subscription.ready()) {
let user = Meteor.users.findOne({_id: userId}, {fields: {emails: 0}});
return user.services.facebook.name;
}
});
但認購有沒有方法.ready()
呢。
關於如何在這裏使用範圍的任何想法?我記得關閉可以是有用的。
很好的建議。關於訂閱的地方(我已經閱讀了流星指南,但是當你需要一個只在需要時才訂閱的全球幫手時,不知道該怎麼辦),還是應該在每個'onCreated() '? – Gus
如果你確定一直都想要它,那麼你會在你的身體上做這件事......例如, Template.body.onCreated(()=> {... –