Я настроил всех пользователей, которые будут созданы с пустым избранное массива: user.favorites: []
Как обновить поле пользователя в угловом метеор?
Поскольку сбор пользователей обрабатывают по-разному, как я должен опубликовать, подписаться, а также доступ подписался избранные данные в угловом-метеором?
Вот что я до сих пор:
// Meteor.methods ==========================================
addFavorite: function(attendeeId){
var loggedInUser = Meteor.user();
if(!loggedInUser){
throw new Meteor.Error("must be logged in");
}
loggedInUser.favorites.push(attendeeId);
loggedInUser.username = loggedInUser.username+"x";
console.log(loggedInUser.favorites);
}
// controller ========================================
$scope.addFavorite = function(attendeeId){
$meteor.call("addFavorite", attendeeId);
}
// server =======================================================
Meteor.publish('myFavorites', function(){
if(!this.userId) return null;
return Meteor.users.find(this.userId);
});
Meteor.users.allow({
insert: function(userId, doc){
return true;
},
update: function(useId, doc, fieldNames, modifier){
return true;
},
remove: function(userId, doc){
return true;
}
});
User.favorites пуст. Когда вызывается addFavorite, он регистрирует массив с единственным userId, который вообще не обновляет mongoDB. Похоже, что Meteor.user() не обновляется. Кто-нибудь знает, что я делаю неправильно? Спасибо!
EDIT Последняя итерация кода. Фавориты передаются в $scope.favorites
, но не реагируют. Как это исправить? Благодаря!
// publish
Meteor.publish('myFavorites', function(){
if(this.userId){
return Meteor.users.find(this.userId, {
fields: {
favorites: 1
}
});
}else{
this.ready();
}
});
// subscribe
$meteor.subscribe('myFavorites')
.then(function(subscriptionHandle)
{
var user = $meteor.collection(function(){
return Meteor.users.find({_id: Meteor.userId()});
});
$scope.favorites = user[0].favorites;
});
Спасибо за ваш ответ, я думал о помещении его в профиле, но я хочу любимец пользователя видимых только пользователь, и профили пользователей являются общедоступными. –
Я хотел бы отметить, что я удалил autopublish и небезопасно –
Создайте издателя, который включает в себя ключи, которые вы хотите поделиться с текущим пользователем, а затем подписаться на него. Это позволяет расширять опубликованные ключи за пределами только профиля. –