8

我在客户端有一个流星集合

Friends = new Meteor.Collection("Friends");
Meteor.subscribe("Friends");

我有一个用户通过 facebook 进行身份验证,我想获取他们的朋友列表:

FB.api("/me/friends?    auth_token="+response.authResponse.accessToken,
    function(response){
        for (i = 0; i<response.data.length;i++){
            Friends.insert(response.data[i]);
    }
);

我有一个函数来获取该列表:

Template.Friends.all_friends = function(){
    return Friends.find();
} 

我有一个模板想在屏幕上显示所有朋友:

<template name="Friends">
    {{#each all_friends}}
    <div id="{{id}}" class="friend">
        <img src="http://graph.facebook.com/{{id}}/picture" />
        {{name}}
    </div>
    {{/each}}
</template>

页面上似乎发生的事情是所有朋友都在屏幕上闪现一秒钟,然后屏幕立即闪回空白。

在 javascript 控制台中,每个朋友都会出现一次消息(是的,它大于零,感谢您的提问)

insert failed: 404 -- Method not found

所以!我错过了什么?任何人?

4

2 回答 2

27

您需要在客户端和服务器上都使用该 Collection 声明。

// common code, do not put under /client or inside Meteor.is_client test
Friends = new Meteor.Collection("Friends");
于 2012-05-07T20:09:42.680 回答
4

如果您只想在客户端使用 Collection 并且不需要将该数据保存到服务器,您可以在“client”文件夹或 .isClient() 函数中声明您的集合,方法是将 null 传递给构造函数,如下所示:

if(Meteor.isClient()){
// Some other code
...

onlyClientCollection = new Meteor.Collection(null);

// Some other code
...
}
于 2013-09-16T00:02:49.487 回答