Существует несколько примеров публикации/подписания, но не ясно, что является лучшей практикой для хранения пользовательских данных во встроенной коллекции «пользователей» в Meteor (особенно в новой возможности коллекций с конкретными шаблонами).Meteor: какой способ добавить пользовательский объект настроек в коллекцию пользователей?
Например, мне нужно хранить историю пользователей обзора - то, что доступно по Meteor.user().settings.history.lastvisited[]
Задача состоит в том:
- ли какие-либо специальные публикации/подписки, необходимые для выше? ( причины того, я предполагаю, что в
users
коллекции уже опубликовано и доступны на стороне клиента - так что нам нужно еще?) - Как заботиться о краевыми случаях, когда пользователь является новым и, следовательно,
settings.history
объекта не может быть определены? Можем ли мы создать специальное издание, которое автоматически заботится о создании пустого объекта, еслиsettings
не определено? Как это сделать?
Я сделал это:
// server side
Meteor.publish('userSettings', function (maxRows) {
if (this.userId) {
return Meteor.users.find({ _id: this.userId }, { fields: {'settings':1}});
}
this.ready();
});
//client side
Meteor.subscribe('userSettings');
Но я не вижу, во всяком случае, как я могу получить доступ к опубликованному «UserSettings» объект на стороне клиента - что не хватает ??
Спасибо Ethaan. Как получить доступ к подписанной коллекции 'userSettings' на стороне клиента? Через «Meteor.user(). Настройки« как обычно »(в этом случае цель публикации/подписаться). –
по умолчанию только опубликованный клиентом «профиль, имя пользователя, адрес электронной почты», любое другое поле, которое вы хотите опубликовать на стороне клиента, должно быть опубликовано в функции публикации (чертовски много раз публикует слово) – Ethaan
Cool - Thanks , Итак, если я правильно понял - 'publish (userSettings, ...) 'позволит настраивать поля в запросе для публикации клиенту, но мы по-прежнему получаем доступ к этим полям через' Meteor.user(). customField' correct? –