я коллекцию под названием GameMaps, определяется следующим образом:коллекция Метеор отличается на сервере и на клиенте
GameMaps = new Meteor.Collection('gameMaps');
Запись в этой коллекции выглядит следующим образом:
{
name: 'foo',
structure: {
arg1: 'bar',
fields: [
{name: 'someName', value: 'someValue'},
{name: 'someOtherName', value: 'someOtherValue'}
]
}
}
Теперь на сервере смогу получить доступ к первому полю структуры следующим образом:
GameMaps.findOne({name: 'foo'}).structure.fields[0]
, который возвращает этот объект в ожидании d:
{name: 'someName', value: 'someValue'}
Но когда я пытаюсь выполнить то же самое на клиенте я получаю пустой объект:
Object {}
Моя публикация для коллекции выглядит следующим образом:
Meteor.publish('allMaps', function() {
return GameMaps.find();
});
И подписка вот так:
Meteor.subscribe('allMaps');
На клиенте я вижу все элементы этой коллекции, за исключением объектов в массиве «fields». Я даже вижу количество элементов в массиве «поля», но не могу получить к ним доступ. Наверное, я упускаю что-то, когда публикую коллекцию, но я не понимаю, что.
Что произойдет, если вы измените имя 'fields' на что-то еще? –
Можете ли вы также показать код для определения коллекции? Кроме того, есть ли причина, по которой вы добавляете команду subscribe в блок автозапуска? –
Как вы к ним обращаетесь? Подождите, пока подписка закончится? Одинаково ли это, если вы пытаетесь получить доступ к нему в консоли js? – Akshat