Я показываю список элементов и для каждого элемента, принадлежащего пользователю. Я перечисляю имя, описание и пользователя, которые его создали (отсюда имя). Я хочу также иметь ссылку, которая идет к пользователю, который создал элемент. Примечание. Это также ссылка на страницу элемента.Как я могу перейти на страницу профиля пользователя?
Вот что я сделал до сих пор:
пакеты
aldeed:collection2
aldeed:simple-schema
iron:router
aldeed:autoform
useraccounts:iron-routing
accounts-password
accounts-base
useraccounts:core
zimme:active-route
todda00:friendly-slugs
reywood:publish-composite
клиент/товар/listed_item.html
<template name="listedItem">
<a href="{{pathFor 'itemPage'}}">
{{name}}
</a>
<a href="{{pathFor 'profile'}}">
{{usernameFromId user}}
</a>
</template>
клиент/элементы/items.html
<template name="items">
<div class="items">
{{#each items}}
{{> listedItem}}
{{/each}}
</div>
</template>
клиент/subscriptions.js
Meteor.subscribe('items');
Meteor.subscribe('allUsernames');
Meteor.subscribe('users');
клиент/helpers.js
Template.items.helpers({
items: function() {
return Items.find();
},
});
Template.registerHelper("usernameFromId", function (userId) {
var user = Meteor.users.findOne({_id: this.userId});
return user.profile.name;
});
сервер/publications.js
Meteor.publish("items", function() {
return Items.find();
});
Meteor.publish("users", function() {
return Meteor.users.find({}, {
fields: { profile: 1 }
});
});
Meteor.publish("allUsernames", function() {
return Meteor.users.find({}, {
fields: { 'profile.name': 1, 'services.github.username': 1 }
});
});
Lib/routes.js
Router.route('/items', function() {
this.render('items');
});
Router.route('/users/:_id', {
template: 'profile',
name: 'profile',
data: function() {
return Meteor.users.findOne({_id: this.params._id});
}
});
Что это, хотя это показывает URL пунктов для URL пользователей, так это ссылки на пользователя, которого нет. то есть items/1234
= users/1234
, когда в системе действуют только пользователи/1. Как я могу получить ссылку на правильный идентификатор пользователя?
Только вопрос: в client/helpers.js у вас есть параметр userId, но внутри функции вы используете this.userId. Возможно, вы намеревались найти пользователя с параметром userId? –
@JosHarink Да, это правильно. Я хотел, чтобы помощник работал над поиском полей пользователей для любого шаблона. –