0

現在、私のPostsモデルにはtitlecontentフィールドがあります。

クライアント/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を表示するだけです。代わりに、投稿の作成者の電子メールを表示したいと思います。

それを達成する方法は?

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 に答える