2013-08-29 43 views
24

Tôi nhận được tin nhắn insert failed: Method not found log và nó có lẽ là kết quả của những gì được mô tả trong các chủ đề:Meteor: chèn thất bại: Phương pháp không tìm thấy

Tuy nhiên , Tôi không thấy như thế nào. Hãy để tôi hiển thị mã với hy vọng sẽ giải thích rõ ràng hơn. Tôi đang sử dụng Coffeescript:

if Meteor.isClient 
    @VINs = new Meteor.Collection("vins") 

    scoped_vins = @VINs 
    Template.vins.events = 
    "click .icon-plus-sign": -> 
     console.log "this is #{this}" 
     realVIN = $("#your-vin").val().replace /\D/g, '' 
     console.log "user id is: #{Meteor.userId()} vin is #{parseInt(realVIN)}" 
     VINs.insert number: parseInt(realVIN), owner: Meteor.userId() if Meteor.userId() 
     $("#your-vin").val('') 
else 
    @VINs = new Meteor.Collection("vins") 

Tôi hoàn toàn một n00b với Meteor, nhưng những gì tôi đã lượm lặt từ các chủ đề nêu trên được trích dẫn là bộ sưu tập phải có sẵn trên máy khách và máy chủ. Đó không phải là những gì tôi đã làm, hay tôi đang phát triển mù cà phê?

Cảm ơn!

+0

Duplicate của [Meteor 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 - không tìm thấy phương pháp] (http://stackoverflow.com/questions/10483142/meteor-using-a-local-connection-results-in-error-insert-failed-404-method-n) –

+1

Một bước đầu tiên tốt như là một n00b là để loại bỏ bất kỳ mã nào không liên quan đến việc tạo lại lỗi. Ví dụ. 'thay thế' trên VIN có thể không liên quan đến lỗi, vì vậy hãy thử xóa nó đi. Có lỗi vẫn xảy ra? Tiếp tục xóa mã cho đến khi bạn tách biệt trường hợp sao chép tối thiểu. –

Trả lời

40

Đảm bảo bạn cũng đã khai báo bộ sưu tập của mình trên máy chủ cũng như ứng dụng khách.

Trong mã của bạn ở trên @VINs = new Meteor.Collection("vins") trong cả máy khách và máy chủ, điều gì có thể là bạn đã đặt mã của mình vào thư mục /client?

Nếu vậy điều này có nghĩa là mã sẽ chỉ được chạy trên máy khách, ngay cả khi bạn có else cho khối if Meteor.isClient.

Để khắc phục điều này, sao chép dòng bạn sử dụng thành một file .coffee trong /server thư mục:

@VINs = new Meteor.Collection("vins") 
+0

Và ... bạn đóng đinh nó vào lần thử đầu tiên :) Đó là sự kết hợp giữa sự thiếu hiểu biết của tôi và sắp xếp lại một số thư mục. –

+1

Tôi không chắc lắm! Nếu nó giải quyết vấn đề của bạn, bạn cũng không cần 'nếu Meteor.isClient..else..' vì nó sẽ chạy trên máy khách và máy chủ tùy thuộc vào thư mục mà các tệp đang ở. Nếu bạn đặt các tệp của mình vào thư mục gốc sau đó bạn có thể sử dụng 'nếu Meteor.isClient' (như ví dụ todos) – Akshat

+0

Right. Vâng, cảm ơn! Tôi đến đó. Chỉ cần không nhanh như tôi đoán. Chỉ dự án mongo thứ hai của tôi và tôi phải giữ cho đầu của tôi ra khỏi không gian quan hệ. –

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