使用本地连接的Meteor会导致错误:插入失败:404 - 找不到方法

时间:2012-05-07 13:40:52

标签: collections client-side meteor

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

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>

页面上似乎发生的事情是,所有朋友 DO 在屏幕上闪烁一瞬间,然后屏幕立即闪回空白。

在javascript控制台中,每个朋友都会显示一条消息(是的,它超过零,感谢您的询问)

insert failed: 404 -- Method not found

原来如此!我错过了什么?任何人吗?

2 个答案:

答案 0 :(得分:27)

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

// common code, do not put under /client or inside Meteor.is_client test
Friends = new Meteor.Collection("Friends");

答案 1 :(得分:4)

如果你只想在客户端使用Collection而你不需要将这些数据保存到服务器,你可以通过将null传递给像这样的构造函数来在“client”文件夹或.isClient()函数中声明你的集合。 :

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

onlyClientCollection = new Meteor.Collection(null);

// Some other code
...
}