Im пытается создать список «комнат». Предполагаемая последовательность:Коллекция helper выбрасывает не определенную ошибку
- Нажмите имя пользователя на его/ее Страница профиля
- Проверьте существующую комнату. Если да, идите в эту комнату, если не настроите новую комнату.
Im с использованием как dburles:collection-helpers
, так и reywood:publish-composite
.
Его бросает мне эту ошибку.
TypeError: Cannot read property 'username' of undefined at Document.Rooms.helpers.recName (rooms.js:18)
And line 18 is: return Meteor.users.findOne({ _id: this.receiver }).username;
т.е. _id: this.receiver не определено.
Я также попытался добавить защитные чеки в сборщики, но ошибка остается. То есть возврат user && user.username for example
.
Одна вещь, которую я отмечаю, это то, что я заметил, когда я нажимаю на пользователя, он идет в комнату, связанную с идентификатором пользователя. Однако, когда я нажимаю назад, он перескакивает в пустую комнату с другим идентификатором, который непризнан.
Соответствующие коды:
Сервер публикующие
Meteor.publish("onlusers", function(){
return Meteor.users.find({});
});
Rooms.js коллекция помощник
Rooms.helpers({
recName: function() {
return Meteor.users.findOne({ _id: this.receiver }).username;
}
});
user.js (профильный р возрастные события)
Template.usersShow.events({
'click .user': function() {
var receiver = this._id;
Session.set('chatId', this._id);
var res = Rooms.findOne({
$or: [
{ owner : this._id },
{ receiver : this._id }
]
});
if(res){
Router.go('roomDetail', { "_id" : res._id });
} else {
var newRoom = Rooms.insert({
owner : Meteor.userId(),
receiver : receiver,
username : Meteor.user().username,
});
Session.set('roomid', newRoom);
Router.go('roomDetail', { "_id" : newRoom });
}
}
});
Спасибо! Пробовал это тоже, но ошибка остается. – Thinkerer
Пожалуйста, покажите, как вы публикуете пользователей, как текущего пользователя, так и других пользователей в комнатах. –