7
votes

Meteor où définir ma collection?

J'ai une structure d'application assez simple contenant ces libs

serveur - contient une certaine configuration pour routage et env

Client - contient des modèles ( ) & js fichier pour chaque modèle

collections

maintenant à l'intérieur des collections, j'ai un fichier appelé "albums.js" et contient un contenu assez simple

var albums = nouveau météore.collection ("albums");

maintenant dans mon dossier client, j'essaie d'accéder à cette variable albums et je reçois une erreur indéfinie.

Ma cible est de prendre des données de formulaire et de le transmettre à Collection.insert


0 commentaires

3 Réponses :


4
votes

variables définies avec var sont locales dans le fichier sont définies dans. Si vous souhaitez une variable globale, partagée entre les fichiers, vous devez le définir sans le var Mot clé.

On dirait que ce n'est pas dans le doc, mais c'est dans le https: / /Github.com/meteor/meteor/blob/master/history.md fichier (pour la version 0.6.0):

Variables déclarées avec Var au niveau le plus à l'extérieur d'un fichier source JavaScript sont maintenant privés dans ce fichier. Supprimer le Var pour partager une valeur entre les fichiers.

Fondamentalement, chaque fichier JS est enveloppé dans le (fonction () {...}) (); motif pour fournir cette encapsulation.


0 commentaires

12
votes

N'utilisez pas var sauf si vous le souhaitez privé de ce fichier.

albums = nouveau météore.Collection ("albums");


1 commentaires

Qu'est-ce qui détermine l'ordre des collections? Je les ai tous globaux et à l'intérieur du schéma de la collection X a une référence à un objet à l'intérieur du schéma de la collection Y, mais lorsque j'essaie d'y accéder, il est indiqué que collection y n'est pas défini . Que puis-je faire?



5
votes

Un autre moyen de définir des variables globales est de créer un nouveau fichier, par exemple. collections.js et mettez-le directement dans votre dossier racine de l'application (pas dans un sous-dossier!)

Dans ce fichier, vous pouvez définir la variable / collection globale (sans var mot-clé)


1 commentaires

En fait, vous voudrez peut-être le mettre dans votre dossier lib pour vous assurer qu'il est chargé avant la plupart des autres scripts.