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コンソールでは、メッセージは私が持っている友達ごとに1回表示されます(はい、ゼロ以上です、質問してくれてありがとう)

insert failed: 404 -- Method not found

それで!私は何を逃しましたか?誰?

4

2 に答える 2

27

クライアントとサーバーの両方でそのコレクション宣言が必要です。

// 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

クライアント側でのみコレクションを使用する必要があり、そのデータをサーバーに保存する必要がない場合は、次のようにコンストラクターにnullを渡すことにより、「client」フォルダーまたは.isClient()関数でコレクションを宣言できます。

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

onlyClientCollection = new Meteor.Collection(null);

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