我正在使用Meteor和ReactJS构建一个简单的blog application。而且我使用react-komposer来使其具有反应性。我遇到的问题与用户注册/登录过程有关。 帐户基础,帐户密码是我用来处理寄存器的两个Meteor软件包&登录功能。
这是 LoginHeader 组件
import React from 'react';
const LoginRegister = () => (
<div>
<a href="/login" className="navbar-link">Login | </a>
<a href="/register" className="navbar-link">Register </a>
</div>
);
const LoginHeader = (user) => (
<div>
<p className="navbar-text navbar-right">
{user ? user.user.emails[0].address : <LoginRegister />}
</p>
</div>
);
export default LoginHeader;
这是 LoginHeader 容器
import LoginHeader from '../components/login_header.jsx';
import {useDeps, composeAll, composeWithTracker, compose} from 'mantra-core';
export const composer = ({context}, onData) => {
const {Meteor, Collections} = context();
var user = Meteor.user();
onData(null, {user});
};
export const depsMapper = (context, actions) => ({
context: () => context
});
export default composeAll(
composeWithTracker(composer),
useDeps(depsMapper)
)(LoginHeader);
我们对它的关注是 user.user.emails [0] .address 工作了一段时间,突然间它开始给我错误未捕获的TypeError :无法阅读财产&#39;电子邮件&#39;未定义的。
帮助我弄清楚我在这里做错了什么。
答案 0 :(得分:1)
遇到了同样的问题。你确定用户已加载吗?请参阅以下问题:
What am I doing wrong when manipulating data in Meteor/MongoDB?
确保找到Michel Floyd指出的确定路径。检查MongoDB中用户集合的结构。
答案 1 :(得分:0)
如果user = Meteor.user()
,则电子邮件地址位于user.emails.address[0]
而不是user.user...