1

私はメッセージのコレクションを持っています。
各メッセージにはuserIdがあります。また、ユーザーの ID を取得してfullNameを返すdisplayUsername()
関数 も定義しました。

私の質問は、サーバー上で underscorejs を使用して拡張できますか。またはオブジェクトを拡張する実用的な方法は何ですか

messages = new Meteor.Collection("messages");

Meteor.publish("messages", function () {
  var allMessages = messages.find({}).fetch();
  return _.each(allMessages, function (msg) {
    return _.extend(msg, {
      username: displayName(msg.userId)
    });
});

だから欲しい

{{#each messages}}
  <p><strong>{{username}}:</strong> {{messageBody}}</p>
{{/each}}

クライアント側で可能であることは知っていますが、もう少し使用します...

ありがとう..

4

2 に答える 2

2

Collection.find の変換をチェック

http://docs.meteor.com/#find

chris は、「Transforming Collection Documents」についてのビデオ tut talk を持っています。

Meteor コレクションの変換オプションを使用すると、MongoDB ドキュメントが fetch、findOne、または find 呼び出しで返される前、およびオブザーバー コールバックに渡される前に変換できます。モデル層の基礎を築きます。このエピソードでは、データベースにセントとして格納されている価格の formatPrice メソッドを持つ単純な変換クラスを作成します。

http://www.eventedmind.com/posts/meteor-transforming-collection-documents

于 2013-05-02T08:49:56.390 に答える
0

残念ながら、変換されたコレクションを送信することはできません。ただし、クライアント側で変換できます。

たとえば、クライアントでコレクションを定義する場合:

クライアント側のjs

var messages = new Meteor.Collection("messages", {transform:function(doc) {
    doc.username = displayName(doc.userId);
    return doc;
}});
于 2013-05-02T09:24:20.027 に答える