使用Meteor将Facebook头像存储在MongoDB中

时间:2015-11-26 11:42:09

标签: javascript mongodb meteor

我正在尝试按照官方网站上的教程构建我的第一个Meteor应用程序。 我使用accounts-uiaccounts-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">&times;</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"

但它不起作用。

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:2)

@kostenko你应该阅读更多关于如何在javascript中访问对象属性的内容。

以上是您上一次尝试的解决方案:

var user = Meteor.user();
avatar: user && user.profile && user.profile.picture || "img/default";