我在客户端有一个流星集合
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
原来如此!我错过了什么?任何人吗?
答案 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
...
}