假设我有一个mongo文档,其格式如下:
{
_id: "someid",
profiles: {
admin: {
metadata: {
addedAt: ISODate(),
addedBy: 'someidornull'
},
recent: {
transactions: []
}
},
player: null,
anonymous: null
}
}
因此,为了简单起见,假设我想在profile中取一个不为空的对象,并将其投影到一个名为"profile"的新字段中,以便在我的客户端使用。
{
_id: "someid",
profile: {
metadata: {
addedAt: ISODate(),
addedBy: 'someidornull'
},
recent: {
transactions: []
}
}
}
我知道这可能是通过聚合完成的,但是,我找不到任何在客户端和服务器上都可以进行聚合的meteor。
虽然我知道使用下划线很容易做到这一点,但我觉得从mongo中去掉下划线会增加复杂性。Mongo解决方案优先。
使用meteor,是否可以将一个字段投影到一个新字段中以供发布?
使用问题中的示例,您可以使用transform选项,该选项允许将行为附加到通过pub/sub通信返回的对象上,以投影新字段。像这样:
Items.find({ /* selector */ }, {
transform: function(item){
item.profile = item.profiles.admin;
return item;
}
});
您还可以查看这个不错的meteor-collection-hooks包。