问题: 我有许多组,每个组都有属于不同组的成员。每个成员在每个组中都有一个标题(角色)。 我正在尝试列出所有组并显示组中的每个成员及其标题。 我正在使用reywood:publish-composite,一切正常,但我无法获得每个成员的标题。 我认为问题出在Template.groupMembers.helpers文件
中 title: function() {
console.log(this.roleId); // this shows up in the console for each member
return Titles.findOne({titleId: this.roleId}); // but this doesn’t work
},
类别:
groups {
"_id" : "xFSzAHBEps2dSKcWM",
"name" : "Generic Group",
"logo" : "generic-logo-hi.png"
}
members {
"_id" : "vyDtiaKKukZYQdFvs",
"groupId" : "xFSzAHBEps2dSKcWM",
"memberId" : "hRx8GBTyB5X8iQQ52",
"roleId" : "1"
}
Meteor.users {
"_id" : "hRx8GBTyB5X8iQQ52",
"profile" : {
"name" : "Bob Lorros"
},
}
titles {
"_id" : "bYsKpsyYtyKR8NYpm",
"titleId" : 1,
"title" : "Staff (non-voting)"
}
服务器/出版物/ publications.js
Meteor.publishComposite('groupMembers', {
find: function() {
return Groups.find({}, {
sort: {name: 1}
});
},
children: [
{
find: function() {
return Titles.find();
},
find: function(group) {
return Members.find({groupId: group._id});
},
children: [
{
find: function(member) {
return Meteor.users.find({_id: member.memberId});
}
},
]
},
]
});
的客户机/模板/测试/ test.js
Template.groupMembers.helpers({
groupMembers: function() {
return Groups.find({}, {
sort: {name: 1}
});
},
members: function() {
return Members.find({groupId: this._id});
},
title: function() {
console.log(this.roleId); // this shows up in the console for each member
return Titles.findOne({titleId: this.roleId}); // but this doesn’t work
},
memberName: function() {
return Meteor.users.findOne(this.memberId);
},
});
的客户机/模板/测试/的test.html
<template name="groupMembers">
<h4>Group - Members</h4>
{{#each groupMembers}}
<b>{{name}}</b><br>
{{#each members}}
{{memberName.profile.name}}
- title = {{title.title}}
<br>
{{/each}}
<br>
{{/each}}
</template>
答案 0 :(得分:1)
从完全不同的角度来看,我实际上认为你可以使用alanning:角色来完成你正在寻找的东西。您可以将该角色用作&#39;标题&#39;在这种情况下,&#39;组&#39;替换你的团体。这是文档:
答案 1 :(得分:1)
不确定,但我认为您的第二个find
可能会覆盖您的第一个find: function() {
return Titles.find();
},
find: function(group) {
return Members.find({groupId: group._id});
},
。而不是:
find: function() {
return [
Titles.find(),
Members.find({groupId: group._id})
];
},
尝试返回游标数组。
Titles
但是,当标题查询是所有标题时,我不明白为什么GroupMembers
是If isDelete Then
oItemsInDateRange(i).MeetingStatus = olMeetingCanceled
oItemsInDateRange(i).Save
oItemsInDateRange(i).Display
oItemsInDateRange(i).Send
oItemsInDateRange(i).Delete
i = i - 1
End If
的孩子。你的意思是在那里查询吗?
答案 2 :(得分:0)
我认为你的publishComposite导致了这个问题,children数组中的每个对象应该只有一个@Override
public void onResume() {
super.onResume();
gridView.setNumColumns(getResources().getInteger(R.integer.num_columns));
gridView.setColumnWidth(getResources().getDimensionPixelSize(R.dimen.gridview_row_item_size));
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
gridView.setNumColumns(getResources().getInteger(R.integer.num_columns));
gridView.setColumnWidth(getResources().getDimensionPixelSize(R.dimen.gridview_row_item_size));
}
和零个或多个find
。此外,发布中的第二个参数必须是函数,而不是JSON对象。试试这个,
children
您还可以将 Meteor.publishComposite('groupMembers', function () {
return {
find: function() {
return Groups.find({}, {
sort: {name: 1}
});
},
children: [{
find: function() {
return Titles.find();
}
},
{
find: function(group) {
return Members.find({groupId: group._id});
},
children: [{
find: function(member) {
return Meteor.users.find({_id: member.memberId});
}
}]
}]
};
});
移至根级别
Titles.find