我正在尝试按照官方网站上的教程构建我的第一个Meteor应用程序。
我使用accounts-ui
和accounts-facebook
个包。
当新用户登录时,我想将他的头像存储在数据库中。
到目前为止我做了什么:
// Insert a task into the collection
Tasks.insert({
text: text,
createdAt: new Date(), // current time
owner: Meteor.userId(), // _id of logged in user
username: Meteor.user().username || Meteor.user().profile.name , // username of logged in user
avatar: Meteor.user().profile.picture
});
在HTML中:
<template name="task">
<li class="{{#if checked}}checked{{/if}}">
<button class="delete">×</button>
<img class="avatar" src="{{avatar}}">
<input type="checkbox" checked="{{checked}}" class="toggle-checked" />
<span class="text"><strong>{{username}}</strong></span>
<span class="text">{{text}}</span>
</li>
</template>
如果用户使用Facebook登录一切正常,但如果他尝试使用自定义用户名登录,则会收到错误消息:
Meteor.user(...).profile is undefined
我想要实现的目标:
avatar: Meteor.user().profile.picture // if the user has a Facebook account
OR
avatar: "img/default" // if the user uses custom username
我已经尝试过:
avatar: Meteor.user().profile.picture || avatar: "img/default"
但它不起作用。
有没有办法实现这个目标?
答案 0 :(得分:2)
@kostenko你应该阅读更多关于如何在javascript中访问对象属性的内容。
以上是您上一次尝试的解决方案:
var user = Meteor.user();
avatar: user && user.profile && user.profile.picture || "img/default";