2016-11-26 55 views
0

我是Meteor和Angular 2的新手,我很努力地列出客戶端的所有用戶。據我瞭解,我要發表我的服務器上,並且訂閱我的客戶,我做了以下方法上:Meteor Angular獲取所有用戶

users.ts

import {Meteor} from 'meteor/meteor'; 

Meteor.publish('usersList', function() { 
    console.log('Publish from server '); 
    return Meteor.users.find({_id: {$ne: Meteor.userId()}}); 
}); 

然而,這並不甚至稱。我正在導入這個文件在我的main.ts。我不確定我應該如何發佈它們才能獲得所有用戶。

我按照Meteor-Angular2 tutorial創建了另一個集合。該文件如下: wishes.ts

import {Meteor} from 'meteor/meteor'; 
import {Wishes} from '../../../both/collections/wishes.collection'; 

Meteor.publish('wishList', function() { 
    console.log("wishlist "+this.userId); 
    return Wishes.find(buildQuery.call(this)); 
}); 


function buildQuery(): Object { 
    const isAvailable = { 
     $and: [{ 
      owner: this.userId 
     }, { 
      owner: { 
       $exists: true 
      } 
     }] 
    } 
    return isAvailable; 
} 

我把它在我的main.ts服務器,它是工作。我不知道爲什麼其中一個文件被調用,爲什麼另一個不是。任何方向將不勝感激!

回答

0

您users.ts中的流星發佈方法將獲得爲訂閱'userList'的每個新客戶端觸發的回調。 如果您想要獲取Meteor用戶集合中的所有用戶,只需一個簡單的查找({})即可爲您提供所有用戶,而如果需要更具體的查詢,則可以使用find查詢中的一個或多個用戶。

您的代碼在您發佈的代碼片段中看起來很好。

+0

不幸的是,客戶端中的Meteor.users.find({})(在訂閱'userList'之後)僅返回當前登錄的用戶。 –

+0

客戶端將從服務器Meteor.users.find({})接收用戶,如果您創建客戶端可訪問的這些用戶的集合,或直接向客戶端發送消息。 如果您在客戶端使用Meteor.users.find({}),它將返回您的當前用戶,因爲它不知道其他用戶:)。 –