2016-11-08 138 views
0

我想从通过订阅返回的文档中获取字段的值。订阅被放置在一个辅助函数中。我在订阅中有一个回调函数返回此值,然后我将返回值分配给一个变量(请参阅代码)。最后,我让帮手返回这个值。但是,返回的值是订阅对象(?),我似乎无法从中获取任何内容。从订阅回调中返回值

代码:

Template.myTemplate.helpers({ 
    'returnUser':function(){ 
     var id = Session.get('currentUserId'); 
     var xyz = Meteor.subscribe('subscriptionName',id,function(){ 
      var user = accounts.find().fetch({_id: id})[0].username; 
      return user; 
      } 
     return xyz; 
     } 
}); 

任何帮助将非常感激。 :)

回答

2

创建模板时,您必须首先加载您的订阅,这会使用Minimongo创建您的数据实例。

Template.myTemplate.onCreated(function() { 
    var self = this; 
    self.autorun(function() { 
     self.subscribe('subscriptionName',id); 
    }); 
}); 

然后在助手,你可以做一个查询检索数据

Template.myTemplate.helpers({ 
    'returnUser': function(){ 
     var id = Session.get('currentUserId'); 
     return accounts.findOne(id).username; 
    } 
}); 
+0

什么是分配这个自我的目的是什么?使用this.autorun和this.subscribe不会很好吗? – Ajmal

+0

用于闭包的JS http://stackoverflow.com/a/962040/3911467 – alexhenkel