2014-01-23 59 views
0

用戶具有包含標籤列表的配置文件。我需要吸引與用戶標籤匹配的所有帖子,其次是剩餘的帖子,即使它們與用戶的標籤不匹配。如果您的帖子的標籤匹配度最高,那麼這將非常好。如何使用Meteor和MongoDB檢索相關文章?

我該怎麼用Meteor做到這一點?沒有聚合框架並且不能一次發佈多個遊標就會讓我失望。

目前我的發佈函數從用戶的會話中獲取一個限制參數,並在用戶接近列表末尾時增加。

// I would like to return these results 

res = [{_id:B},{_id:A},{_ID:C},{_id:D},{_id:E}] 

userTags = ['foo', 'qux', 'bar'] 


Posts 

{ 
    _id: A, 
    title: 'Orange', 
    tags: ['foo', 'baz'] 
}, 
{ 
    _id: B, 
    title: 'Blue', 
    tags: ['foo', 'bar', 'baz', 'qux'] 
}, 
{ 
    _id: C, 
    title: 'Yellow', 
    tags: ['foo'] 
}, 
{ 
    _id: D, 
    title: 'Green', 
    tags: ['ford'] 
}, 
{ 
    _id: E, 
    title: 'Black', 
    tags: ['chevy', 'toyota'] 
} 

回答

1

您可以在每個集合上多次呼叫Meteor.publish。遊標返回然後在客戶端合併。

// server code 
Meteor.publish("postsByTag", function() { 
    return Posts.find(... match tags ...); 
}; 
Meteor.publish("topTenPosts", function() { 
    return Posts.find(... top ten ...); 
}; 

// client code 
Meteor.subscribe("postsByTag"); 
Meteor.subscribe("topTenPosts");