簡體   English   中英

客戶端控制器中未定義Meteor.user()

[英]Meteor.user() is undefined in client-side controller

在METEORJS應用程序的客戶端,我有一個顯示一些用戶的控制器。

我的Meteor.user()函數有問題,錯誤是:Meteor.user(...)未定義。

這是我的代碼:

this.AdminUsersController = RouteController.extend({
template: "Admin",


yieldTemplates: {
    'AdminUsers': { to: 'AdminSubcontent'}

},

onBeforeAction: function() {
    var permissions = Meteor.user().profile.permissions;
    if (permissions && permissions.indexOf('Users') != -1)
        this.next();
    else this.redirect('/admin/dashboard');
},

action: function() {
    if(this.isReady()) { this.render(); } else { this.render("Admin"); this.render("loading", { to: "AdminSubcontent" });}
    /*ACTION_FUNCTION*/
},

isReady: function() {


    var subs = [
        Meteor.subscribe("users")
    ];
    var ready = true;
    _.each(subs, function(sub) {
        if(!sub.ready())
            ready = false;
    });
    return ready;
},

data: function() {

    var data = {
        params: this.params || {},
        users: Users.find({labo_id: Meteor.user().profile.labo_id}, {sort: {createdAt:-1}})
    };


    return data;
},

onAfterAction: function() {

}});

它在數據功能中。 我嘗試檢索連接到登錄用戶的所有用戶並獲得相同的labo_id字段...

我不知道為什么它會給我這個,因為在onBeforeAction函數中,我可以訪問Meteor.user(),特別是他的個人資料......

有人知道我該怎么做才能讓它運行?

謝謝你的未來答案:)

這是一個時間問題。 如果尚未加載,Meteor.user()不一定返回數據。 但是Meteor.userId()將返回用戶記錄的_id(如果他們已登錄)。 如果您可以將查詢更改為依賴於該_id,那么它可以正常工作。

根據您使用的路由器,您可以添加resolve:條目以確保路由在激活之前等待加載用戶記錄,然后您的查詢將起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM