Ответ 1
Совершенно верно.
-
Удалите пакет
autopublish
, который включен по умолчанию:meteor remove autopublish
-
Создайте свою коллекцию:
Rooms = new Meteor.Collection("rooms");
Нет необходимости в условном isServer или isClient, так как это должно присутствовать на -
В коде на стороне сервера publish только подмножество вашей коллекции, обнуляя поля, которые вы не хотите, чтобы клиент имел:
if (Meteor.isServer) { //you could also Rooms.find({ subsetId: 'some_id' }) a subset of Rooms Meteor.publish("rooms", function () { return Rooms.find({}, {fields: {secretInfo: 0}}); }); }
ПРИМЕЧАНИЕ: установка
{secretInfo: 0}
выше не устанавливает все экземплярыsecretInfo
для каждой строки в коллекцииRooms
равным нулю. Он удаляет поле целиком из коллекции клиентов. Подумайте о0
как выключенном переключателе:) -
Подпишите клиентскую сторону в опубликованную коллекцию:
if (Meteor.isClient) { Deps.autorun(function() { Meteor.subscribe("rooms"); }); }
Надеюсь, это поможет!