2015-07-09 30 views
6

Tôi có một publications.js tập tin đó chỉ bao gồmMeteor.publish không phải là một chức năng

Meteor.publish('org', function(_id){ 
    return Organizations.findOne(_id); 
}); 

Khi điều làm cho tôi có được điều này trong bảng điều khiển

Uncaught TypeError: Meteor.publish is not a function 

tôi đang thiếu gì ở đây ... Tôi chắc chắn nó rất rõ ràng.

Trả lời

14

Có thể bạn đang vô tình chạy mã trên máy khách. Bạn có hai lựa chọn:

  1. Đặt mã xuất bản vào tệp dưới thư mục /server trong ứng dụng của bạn.
  2. Bọc phần bên trên của khối if (Meteor.isServer) {}.

(1) Có lợi thế là không truyền mã xuất bản cho khách hàng.

Đọc được đề xuất: Structuring your application.

+0

Tôi có _publications.js_ này trong thư mục ** Project/Server/** của mình ... – btbJosh

+0

Điều đó khắc phục vấn đề ... mặc dù tôi không hiểu tại sao cấu trúc của tôi không giải quyết được sự cố như sự hiểu biết của tôi mọi thứ trong thư mục máy chủ sẽ chỉ thực thi trên máy chủ. – btbJosh

+1

'máy chủ' cần phải thấp hơn. 'Server' sẽ chia sẻ cho cả máy khách và máy chủ. –

1

Nếu tập tin là cội rễ, bạn cần phải quấn nó với:

if (Meteor.isServer) { /* ... */ }

Phương pháp Meteor.publish chỉ tồn tại trên máy chủ.

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