Я создаю веб-приложение с помощью Meteor и Iron Router, и одной из моих целей является создание профиля для пользователя, который вошел в систему (где он может редактировать свою информацию) и просмотр профиля для всех пользователей (который может просматривать любой человек).Создание страницы профиля пользователя с помощью Meteor и Iron Router
Профиль профиля пользователя, который вошел в систему, работает хорошо, но у меня возникают проблемы с созданием профиля профиля пользователя для других пользователей. Когда я пытаюсь получить доступ непосредственно в браузере к некоторому профилю пользователя с URL-адресом (eg: localhost:3000/users/"id"
), он отображает данные пользователя, входящего в систему, и URL-адрес в браузере изменяется на localhost: 3000/users/[object%20Object]
.
Также тег со ссылкой на всегда всегда пуст, когда страница с этой информацией отображается.
Вот код, связанные с этой проблемой:
сервер - publications.js
Meteor.publish('singleUser', function(userId) {
return Meteor.users.find(userId);
});
router.js
Router.map(function() {
this.route('profile', {
path:'/profile',
data: function() {return Meteor.user();}
});
this.route('user_profile', {
path: '/users/:_id',
waitOn: function() {
return Meteor.subscribe('singleUser', this.params._id);
},
data: function() {
var findById = Meteor.users.findOne(this.params._id);
if (typeof findById !== "undefined") {
Router.go(getProfileUrlById(findById), {replaceState: true});
}
}
});
});
пользователя шаблон профиля
<template name="user_profile">
<h4>Username</h4>
<p>{{username}}</p>
<h4>Email:</h4>
<p>{{email}}</p>
</template>
Профиль пользователя Помощники
Template.user_profile.helpers({
username: function() {return Meteor.user().username},
email: function() {return Meteor.user().emails[0].address}
});
шаблон Item
<template name="item">
</span> <a href="{{profileUrl}}">{{author}}</a>
</template>
Пункт Помощники Профиль
Template.item.helpers({
profileUrl: function() {
var user = Meteor.users.findOne(this.userId, {reactive:false});
if(user)
return getProfileUrlById(user);
}
});
getProfileUrlById = function(id) {
return Meteor.absoluteUrl()+'users/' + id;
}
пользователя, вошедшего в шаблоне профиля
<template name="profile">
<h4>Username</h4>
<p>{{username}}</p>
<h4>Email:</h4>
<p>{{email}}</p>
</template>
Пользователь вошел в помощниках
Template.profile.helpers({
username: function() {return Meteor.user().username},
email: function() {return Meteor.user().emails[0].address}
});
Я что-то упустил?
Заранее благодарен!
благодарит за ответ. Вы предлагаете что-то подобное? if (typeof findById! == "undefined") { \t \t \t \t Router.go (getProfileUrlById (findById.userId), {replaceState: true}); \t \t \t} – swayziak
Помогите мне прояснить это? – swayziak