2013-08-04 1 views
4

Ceci est la chose la plus étrange, pour une raison quelconque, même avec l'auto-publication activée, je ne peux pas accéder à la collection à partir de la console du navigateur. Le code ci-dessous est un programme de liste simple où vous pouvez entrer des éléments dans la collection et il apparaîtra comme une liste sur l'écran. Dans la console lorsque j'essaie d'accéder à la base de données en tapant People.find() ou People.find(). Fetch() il provoque une erreur 'ReferenceError: Impossible de trouver la variable: People'Lorsque vous utilisez Meteor, je ne peux pas accéder à la collection depuis la console client?

Comment ça se fait passe je publie autopublish, alors je pensais pouvoir accéder à la collection du client?

code:

var People = new Meteor.Collection("people"); 


if (Meteor.isClient) { 


console.log(People.find()); 

Template.personList.people = function() { 
    return People.find(); 
}; 

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

Template.person.editing = function() { 
    return Session.get("edit-" + this._id); 
}; 

Template.person.rendered = function() { 
    var input = this.find("input"); 
    if(input) { 
     input.focus(); 
    } 
}; 

Template.person.events({ 
    'click .name': function (e, t) { 
     Session.set("edit-" + t.data._id, true); 
    }, 
    'keypress input': function (e, t) { 
     if (e.keyCode == 13) { 
      People.update(t.data._id, { $set: { name: e.currentTarget.value }}); 
      Session.set("edit-" + t.data._id, false); 
     } 
    }, 
    'click .del': function (e, t) { 
     People.remove(t.data._id); 
    } 
}); 

} 
+0

J'ai donc découvert qu'avec Meteor 0.6 les collections ne sont pas définies globalement en utilisant var. J'ai enlevé le var et maintenant j'ai pu accéder à la Collection depuis la console. Bien que j'ai lu que vous pouvez également mettre le symbole @ devant la variable de collection comme ceci: @People = new Meteor.Collection ("people"); J'ai fait ça mais ça ne marche pas. Comment puis-je faire fonctionner le symbole @? – nearpoint

Répondre

13

Vous n'avez pas besoin d'utiliser @ sauf si vous utilisez coffeescript. En javascript plaine supprimer le var si votre variable est accessible partout en dehors du fichier (y compris la console chromée):

var People = new Meteor.Collection("people"); 

devient

People = new Meteor.Collection("people"); 

Pour utiliser coffeescript utiliser une extension .coffee et exécuter meteor add coffeescript à permettre à météore de compiler des fichiers coffeescript en fichiers js

+1

Merci beaucoup, son fonctionnement! – nearpoint

+1

Pour plus d'informations, rendez-vous sur: http://docs.meteor.com/#namespacing – mrmnmly

+0

merci ça marche! –

2

pour répondre à votre question @ est utilisé pour CoffeeScript (Javascript Alternative), vous pouvez ajouter le package de météores pour elle et puis rédigez votre application dans cette langue. En savoir plus ici http://coffeescript.org

Questions connexes