2012-05-07 27 views
8

Tôi đã có một bộ sưu tập thiên thạch trên các mặt hàngMeteor sử dụng một kết quả kết nối địa phương do lỗi: chèn thất bại: 404 - Phương pháp không tìm thấy

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

Tôi có một người dùng xác thực với facebook và tôi muốn lấy một danh sách bạn bè của họ:

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

tôi có một chức năng để có được danh sách đó:

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

tôi có một mẫu mà muốn hiển thị tất cả các bạn bè trên màn hình:

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

gì dường như xảy ra trên trang là tất cả các bạn bè DO đèn flash lên trên màn hình trong một khoảnh khắc thứ hai sau đó ngay lập tức nhấp nháy màn hình trở lại để trống.

Trong giao diện điều khiển javascript thông điệp xuất hiện một lần mỗi người bạn mà tôi có (có, nó là nhiều hơn không, cảm ơn cho hỏi)

insert failed: 404 -- Method not found 

Vì vậy! Tôi đã bỏ lỡ điều gì? Bất kỳ ai?

Trả lời

27

Bạn cần có Tuyên bố bộ sưu tập đó trên cả máy khách và máy chủ.

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

Nếu bạn muốn sử dụng Bộ sưu tập chỉ đứng về phía khách hàng và bạn không cần phải lưu dữ liệu đến máy chủ, bạn có thể khai báo các bộ sưu tập của bạn trong thư mục "khách hàng" hoặc trong .isClient() chức năng bằng cách đi qua null để nhà xây dựng như sau:

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

onlyClientCollection = new Meteor.Collection(null); 

// Some other code 
... 
} 
+0

Điều này khiến tôi gặp khó khăn. Cảm ơn vì câu trả lời – Pawan

Các vấn đề liên quan