如何使用meteor将twitter和instagram @(用户名)显示为个人资料名称?

时间:2018-04-14 20:25:47

标签: javascript meteor

我正在尝试使变量从2个不同的值中进行选择,如果一个为null,则选择另一个。

author: '@'+ user.services.instagram.username.toUpperCase() || user.services.twitter.screenName.toUpperCase()

当我尝试评论Twitter帐户时,这会导致错误。

TypeError: Cannot read property 'instagram' of undefined

这是一个快照代码

comment = _.extend(commentAttributes, {
  userId: user._id,
  // author: '@'+user.services.instagram.username.toUpperCase(),
  author: '@'+ user.services.instagram.username.toUpperCase() || user.services.twitter.screenName.toUpperCase(),
  submitted: formatDate(new Date())
});

2 个答案:

答案 0 :(得分:0)

  1. 您的错误消息只是表明您的user.services变量为undefined
  2. '@' + null提供了'@null',因此它总是很简洁。

答案 1 :(得分:0)

我找到了解决方案。我试图用'相同'变量拉出Instagram和twitter的@句柄,所以我可以将它用作个人资料名称。问题是Instagram正在使用services.instagram.username而Twitter正在使用services.twitter.screenName

我可以修改这个编辑流星包但这不是一个完整的解决方案,而是我为'Account.onCreateUser'based on this制定了一个条件。

所以我只是让profile.name保存用户@而不是名字。

        if (service == 'instagram') {
            if (!user.profile)
                user.profile = {};
            if (!user.profile.name)
                user.profile.name = user.services[service].username;
        }

        if (service == 'twitter') {
          if (!user.profile)
                user.profile = {};
          if (!user.profile.name)
                user.profile.name = user.services[service].screenName;
        }