【问题标题】:Meteor.js, extend an object when publishing itMeteor.js,发布时扩展一个对象
【发布时间】:2013-05-02 08:19:37
【问题描述】:

我有消息集合。
每条消息都有一个userId
我还定义了 displayUsername() 函数,它获取用户的 id,并返回 fullName

我的问题是我可以在服务器上使用 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}}

我知道,这在客户端是可能的,但我会再用一段时间......

谢谢..

【问题讨论】:

    标签: meteor publish-subscribe


    【解决方案1】:

    检查 Collection.find 上的转换

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

    克里斯有一个关于“转换集合文档”的视频 tut 谈话

    Meteor Collections 上的转换选项允许我们在 MongoDB 文档在 fetch、findOne 或 find 调用中返回之前以及在它们被传递给观察者回调之前对其进行转换。它为模型层奠定了基础。在这一集中,我将构建一个简单的转换类,该类具有一个 formatPrice 方法,用于在数据库中存储为美分的价格。

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

    【讨论】:

      【解决方案2】:

      很遗憾,您无法发送转换后的集合。但您可以在客户端对其进行转换。

      例如,当您在客户端定义集合时:

      客户端 js

      var messages = new Meteor.Collection("messages", {transform:function(doc) {
          doc.username = displayName(doc.userId);
          return doc;
      }});
      

      【讨论】:

        猜你喜欢
        • 2011-09-21
        • 2011-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-15
        相关资源
        最近更新 更多