0

现在,我的Posts模型有一个title和一个content字段:

客户端/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 = '';
    }
  }
});

应用程序.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。我希望它显示帖子作者的电子邮件。

如何做到这一点?

4

2 回答 2

1

我想你可以收到电子邮件

Meteor.users.findOne(userId).emails[0];
于 2012-11-24T02:17:00.183 回答
0

@danielsvane 是正确的,但是由于您的 Post 文档的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在事件处理程序中设置变量的值,这不是您在问题中显示的代码.

于 2013-02-09T20:00:53.903 回答