2012-11-23 70 views
0

現在,我Posts模型具有titlecontent場:將用戶字段添加到Meteor記錄?

客戶端/ client.js:

Meteor.subscribe('all-posts'); 

Template.posts.posts = function() { 
    return Posts.find({}); 
}; 

Template.posts.events({ 
    'click input[type="button"]' : function() { 
    var title = document.getElementById('title'); 
    var content = document.getElementById('content'); 

    if (title.value === '') { 
     alert("Title can't be blank"); 
    } else if (title.value.length < 5) { 
     alert("Title is too short!"); 
    } else { 
     Posts.insert({ 
     title: title.value, 
     content: content.value, 
     author: userId #this show displays the id of the current user 
     }); 

     title.value = ''; 
     content.value = ''; 
    } 
    } 
}); 

app.html:

 <!--headder and body--> 
     <div class="span4"> 
     {{#if currentUser}} 
      <h1>Posts</h1> 
      <label for="title">Title</label> 
      <input id="title" type="text" /> 
      <label for="content">Content</label> 
      <textarea id="content" name="" rows="10" cols="30"></textarea> 

      <div class="form-actions"> 
      <input type="button" value="Click" class="btn" /> 
      </div> 
     {{/if}} 
     </div> 

     <div class="span6"> 
     {{#each posts}} 
      <h3>{{title}}</h3> 
      <p>{{content}}</p> 
      <p>{{author}}</p> 
     {{/each}} 
     </div> 
    </div> 
    </div> 
</template> 

我試着添加一個author字段(已經做過meteor add accounts-passwordaccounts-login):

author: userId 

,但它只是說明誰在 記錄的當前用戶的ID,我想它顯示帖子的作者的電子郵件來代替。

如何做到這一點?

回答

1

我認爲你可以得到電子郵件

Meteor.users.findOne(userId).emails[0]; 
0

@danielsvane是正確的,但由於郵政文檔的author字段存儲筆者的_id,而不是電子郵件地址,你需要一個模板幫手以便模板知道如何獲取電子郵件地址。請嘗試以下操作:

// html 
... 
<div class='span6'> 
    {{#each posts}} 
     {{> postDetail}} 
    {{/each}} 
</div> 
... 

<template name="postDetail"> 
    <h3>{{title}}</h3> 
    <p>{{content}}</p> 
    <p>{{authorEmail}}</p> 
</template> 

// javascript 
Template.postDetail.helpers({ 
    // assuming the `author` field is the one storing the userId of the author 
    authorEmail: function() { return Meteor.users.findOne(this.author).emails[0]; } 
}); 

如果它總是顯示當前用戶,而不是誰是帖子的作者的用戶,那麼問題就在於你如何設置你的事件處理程序的userId變量的值,這不是您在問題中顯示的代碼。