2015-11-26 61 views
0

我正試圖在官方網站上的教程之後構建我的第一個Meteor應用。 我使用accounts-uiaccounts-facebook包。使用流星在MongoDB中存儲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

@kostenko你應該閱讀更多關於如何在JavaScript中訪問對象屬性。

,這裏是您最後的解決方案嘗試接近:

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

感謝您的解決方案。爲了記錄我找到了另一個解決方案,但它不是那麼優雅,所以我接受你的。 '嘗試defaultPic = Meteor.user()。profile.picture; } catch(err){ defaultPic =「https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-person-128.png」; }'並插入'avatar:defaultPic' – Kostenko