Коллекция метеоров RefrenceError

У меня Метеор 0.8.0

Я получаю ReferenceError из консоли браузера при попытке вставки в коллекцию Meteor. К вашему сведению, я удалил пакет автопубликации для этого приложения, чтобы поиграть с публикациями и подписками.

Шаблон

<head>
<title>itemsApp</title>
</head>

<body>
{{> name}}
{{> items}}
</body>

<template name="name">
<input type="text" />
</template>

<template name="items">
<h1>Items</h1>
<ul>
{{#each items}}
<li>{{name}} | {{category}}</li>
{{/each}}
</ul>
</template>

Код

var Items = new Meteor.Collection("items");

if (Meteor.isClient) {
Meteor.subscribe("items");

Template.items.items = function () {
return Items.find();
};
}

if (Meteor.isServer) {
Meteor.publish("items", function () {
return Items.find();
});
}

Теперь из консоли браузера (FF28 и Chromium 33.0.1750.152 в Ubuntu 13.10) я получаю

ReferenceError: Элементы не определены

когда я бегу:

Items.insert({name: "iPod", category : "Apple"});

Есть идеи?

Спасибо!


person Nao    schedule 05.04.2014    source источник


Ответы (1)


В Meteor переменные, определенные с ключевыми словами var, являются локальными для файла, в котором они находятся. Так что в вашем случае

var Items = new Meteor.Collection("items");

является местным. Просто удалите ключевое слово:

Items = new Meteor.Collection("items");

Теперь Items является глобальной переменной, и к ней можно получить доступ в других файлах (и из консоли).

person Hubert OG    schedule 06.04.2014
comment
Спасибо Hubert OG, это помогло! Я полагаю, что иметь некоторую инкапсуляцию области действия в Meteor довольно полезно, хотя это совершенно неожиданно. Еще раз спасибо дружище. - person Nao; 06.04.2014