2013-05-24 14 views
7

Sto iniziando a lavorare con Meteor e sto eseguendo il mio primo numero. Sto cercando di inserire un oggetto nella mia collezione. Ottengo il seguente errore di log della console. Qualcuno può aiutare un meteorite Meteor?Errore durante l'inserimento in una collezione di Meteor

inserto riuscita: metodo non trovato

Questa è la linea che causa l'errore:

Videos.insert({name: el.value}); 

Il mio file js:

var Videos = new Meteor.Collection("videos"); 

if (Meteor.isClient) { 
    Template.videoList.video = function() { 
    return Videos.find(); 
    } 

    Template.videoForm.events({ 
    'click button': function(e, t){ 
     var el = t.find("#name"); 
     Videos.insert({name: el.value}); 
     el.value = ""; 
    } 
    }); 
} 
+1

hai un 'var Video = new Meteor.Collection (" videos ")' accessibile anche dal lato server? – Akshat

+0

Sì, era così. La mia collezione era solo sul cliente. Grazie! – zero

+0

@Tarang Dovresti pubblicare il tuo commento come risposta in modo che lo zero possa accettarlo. – Boggin

risposta

12

Quando si tenta Video.insert. Meteor sta cercando di inserire sia sul client che sul server. Meteor lo progetta in questo modo per aiutare a riflettere istantaneamente il cambiamento sul client (Latency Compensation).

Se la raccolta video non è definita sul server (non nel file o nel file Meteor.isServer accessibile dal server). Lancia l'errore che hai incontrato.

Se si desidera inserire solo per il cliente. Puoi accedervi da _collection. Quindi la tua frase di inserimento sarebbe Videos._collection.insert (valori);

È possibile trovare maggiori informazioni qui in questa schermata Cast: http://www.eventedmind.com/feed/meteor-anatomy-of-a-collection-insert

+0

è sempre stato così? Voglio dire che Collection.insert prova sia l'inserimento server che quello client, anche se è una raccolta lato client? – Mascarpone

+1

@Mascarpone Se la raccolta è solo lato client. Non farà la chiamata al server – Bozhao

6

Per creare un locale unica collezione:

MyLocalCollection = new Collection(null);

(doc riferimento here)

Chi "_collection":

_collection è una proprietà non documentata che si comporta in modo strano in molti casi. Potresti preferire di non usarlo.

A proposito di manipolare solo la cache locale di una collezione client-server:

Non c'è modo di farlo direttamente. Tuttavia, è molto facile creare un mirror locale dinamico di una raccolta esistente (nella mia esperienza, questo è il modo di andare per qualsiasi interfaccia utente complessa). Vedi this post.

Problemi correlati