2016-04-23 34 views
0

我在我的應用程序中構建了一個收件箱部分。談話只在兩方,演員和客戶之間進行。使用連接來查找用戶

在收件箱頁面,我發現所有的「對話」的文件,其中的clientId $或actorId來場匹配Meteor.userId的()

所以光標返回文檔匹配此標準是符合市場預期。假設我以演員身份登錄,並且與5個不同的客戶進行了對話,這5個對話文檔將發送給客戶端。

我該如何獲得這些會話文檔的5個不同的clientId,並創建訂閱以僅返回那些用戶對象?

我想這樣做的原因是顯示用戶個人資料圖片,名稱,並通過他們的個人資料頁面提供一個鏈接。

這裏是我的代碼:

出版

Meteor.publish('Conversations', function() { 
    return Conversations.find({$or: [{'clientId': this.userId}, {'actorId': this.userId}]}); 
}); 

路線/認購

// Inbox 
    Router.route('/inbox', { 
    name: 'inbox', 
    waitOn: function() { 
     return [Meteor.subscribe('Messages', this.params._id), Meteor.subscribe('Conversations')] 
    } 
    }); 

回答

0

我沒有測試這些技術,但是我相信你正在尋找的其中之一。

  1. 使用$lookup aggregation(這使根據2一鬆樂集合)
  2. db.small_collection.find()的forEach(函數(OBJ){ db.big_collection.find(OBJ) })。