2013-08-29 18 views
24

Otrzymuję komunikat dziennika insert failed: Method not found i to prawdopodobnie jest wynikiem tego, co zostało opisane w tych wątków:Meteor: insert nie powiodło się: Metoda nie znaleziono

jednak , Nie widzę jak. Pozwól mi pokazać kod w nadziei, która wyjaśni jaśniej. Używam 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") 

Jestem całkowicie n00b z Meteor, ale co ja zbierana z wyżej wymienionych wątków jest to, że kolekcja muszą być dostępne na kliencie i serwerze. Czy to nie jest to, co zrobiłem, czy też rozwijam ślepotę na kawę?

Dzięki!

+0

duplikat [Meteor użyciu lokalnego wynikiem połączenia w wyniku błędu: insert nie powiodło się: 404 - Metoda nie znaleziono] (http://stackoverflow.com/questions/10483142/meteor-using-a-local-connection-results-in-error-insert-failed-404-method-n) –

+1

Pierwszym dobrym krokiem jako n00b jest usunięcie dowolny kod, który nie ma znaczenia dla odtworzenia błędu. Na przykład. "zamień" na VIN prawdopodobnie nie ma nic wspólnego z błędem, więc próbuje go usunąć. Czy błąd nadal występuje? Usuwaj kod, dopóki nie wyodrębnisz minimalnej wielkości reprodukcji. –

Odpowiedz

40

Upewnij się, że zadeklarowałeś swoją kolekcję zarówno na serwerze, jak i na kliencie.

W swoim kodzie powyżej @VINs = new Meteor.Collection("vins") zarówno w kliencie, jak i na serwerze, więc czym może być umieszczenie kodu w katalogu /client?

Jeśli tak, oznacza to, że kod zostanie uruchomiony na kliencie, mimo że masz else dla bloku if Meteor.isClient.

Aby to naprawić, należy skopiować linię użyty do pliku .coffee w katalogu /server:

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

I ... wykończyłeś to przy pierwszej próbie :) To było połączenie mojego braku zrozumienia i reorganizacji katalogów. –

+1

Nie byłem zbyt pewny! Jeśli to rozwiązało twój problem, nie potrzebujesz też 'if Meteor.isClient..else..' ponieważ będzie on już działał na kliencie i serwerze w zależności od katalogów, w których znajdują się pliki. Jeśli umieścisz swoje pliki w katalogu głównym następnie można użyć 'jeśli Meteor.isClient' (jak np. przykład todos) – Akshat

+0

Dobrze. Cóż, dziękuję! Jadę tam. Nie tak szybko, jak się domyślałem. Tylko mój drugi projekt mongo i ja musimy trzymać głowę z dala od przestrzeni relacyjnej. –

Powiązane problemy