我正在使用meteor.js.我有三个收集板,类别,用户.
Boards :
{
"_id": ObjectId("su873u498i0900909sd"),
"locked": NumberInt(0),
"board_name": "Legends",
"description": "legends of the world",
"cat_id": ObjectId("su873u498i0900909sd"),
"cost": NumberInt(1),
"image": "1389249002691_indexhj.jpeg",
"creator": ObjectId("52ce317994acdcee0fadc90c")
}
categories:
{
"_id": ObjectId("su873u498i0900909sd"),
"user_id": ObjectId("su873u498i0900909sd"),
catname:"hjjj"
}
users:
{
"_id":ObjectId(55acec2687fe55f12ded5b4a),
"username" :"mariya"
}
Run Code Online (Sandbox Code Playgroud)
从这里我想获得用户集合中的用户名,该用户集合在类别集合中引用user_id字段,其中类别集合在board集合中使用cat_id引用.这是试图获得它的方式.
Boards.find({_id:"ObjectId(55acec2687fe55f12ded5b4a)"},function(res){
if(res){
categories.find({_id:res.cat_id},function(res1){
if(res1){
users.find({_id:res.user_id},function(res3){
res.send(res3)
})
})
})
Run Code Online (Sandbox Code Playgroud)
由于在流星中使用猫鼬会影响性能我不能使用populate方法.那么有没有其他方法来实现结果而不是一个?
可能是收集助手.
基本用法:
Boards.helpers({
creator: function () {
return Meteor.users.findOne(this.creatorId);
},
category: function () {
return Categories.findOne(this.categoryId);
}
});
Run Code Online (Sandbox Code Playgroud)
模板中的用法非常简单.假设你有你的董事会:
{{#each boards}}
<div>
<h3>{{board_name}}</h3>
<p>Created by</p>: {{ creator.username }}
<p>Category</p>: {{ category.catname }}
</div>
{{/each}}
Run Code Online (Sandbox Code Playgroud)
添加了提示:使用publish-composite以更易于管理的方式发布关系.
Meteor.publishComposite('board', function (boardId) {
check(boardId, String);
return {
find: function () {
return Boards.find(boardId);
},
children: [{
find: function (board) {
return Meteor.users.find(board.creatorId);
}
}, {
find: function (board) {
return Categories.find(board.categoryId);
}
}]
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1236 次 |
| 最近记录: |