gpt4 book ai didi

javascript - Meteor.user().profile 返回 'profile' undefined

转载 作者:数据小太阳 更新时间:2023-10-29 05:57:52 28 4
gpt4 key购买 nike

我有一个名为“isActive”的助手和一个名为“create”的模板.. 见下文

Template.create.isActive = function () {
return Meteor.user().profile.isActive;
};

当我尝试运行此代码时,它会在控制台中返回以下内容:“模板助手中的异常:TypeError:无法读取未定义的属性‘profile’”。

基本上我想从当前用户配置文件中提取“isActive”信息并将其返回到模板。知道为什么这不起作用吗?

更新

//startup on server side:
Meteor.publish("userData", function() {
if (this.userId) {
return Meteor.users.find({_id: this.userId},
{fields: {'profile.isActive': 1}});
} else {
this.ready();
}
});

//startup on client side
Meteor.subscribe('userData');

//router
this.route('list', {
path: 'list',
waitOn : function () {
return Meteor.subscribe('userData');
},
data : function () {
return Meteor.users.findOne({_id: this.params._id});
},
action : function () {
if (this.ready()) {
this.render();
}
}
});

最佳答案

Meteor.user() 未定义。您要么未使用任何用户登录,要么您的模板在用户集契约(Contract)步到客户端之前呈现。如果您使用像 iron router 这样的路由器,您可以等待收集可用或用户登录。

在不使用路由器的情况下,最简单的方法是检查用户是否已定义:

Template.create.isActive = function () {
return Meteor.user() && Meteor.user().profile.isActive;
}

由于 Meteor.user() 是响应式的,模板将在用户更改时重新呈现,即当它可用时。

顺便说一句,这是一个常见的错误,另请参阅:

关于javascript - Meteor.user().profile 返回 'profile' undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25532754/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com