我有消息集合。
每封邮件都有一个 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}}
我知道,在客户端可以使用它,但我会再用它一次......
感谢..
答案 0 :(得分:2)
检查Collection.find上的转换
克里斯有关于“转换收藏文件”的视频讲座
Meteor Collections上的转换选项允许我们在将MongoDB文档在fetch,findOne或find调用中返回之前以及在它们传递给observer回调之前对其进行转换。它为Model层奠定了基础。在这一集中,我将构建一个简单的转换类,它具有formatPrice方法,价格在数据库中以美分的形式存储。
http://www.eventedmind.com/posts/meteor-transforming-collection-documents
答案 1 :(得分:0)
不幸的是,你无法发送转型的收藏品。但是你可以在客户端进行转换。
例如,当您在客户端上定义集合时:
客户端js
var messages = new Meteor.Collection("messages", {transform:function(doc) {
doc.username = displayName(doc.userId);
return doc;
}});