我正在创建一组路线,例如
/
- 应该呈现主页模板
/items
- 应该是商品页面模板
/items/weeARXpqqTFQRg275
- 应该使用给定的_id
这是我正在努力实现的例子
Router.route('items/:_id', function () {
var item = return myItems.find(:_id);
this.render(item);
});
[更新 - 已解决]
通过在服务器端使用Router.map
而不是Router.route
Router.map(function () {
this.route('post', {
path: 'items/:_id',
where: 'server',
action: function(){
var id = this.params._id;
var json = myItems.findOne({_id: id});
this.response.setHeader('Content-Type', 'application/json');
this.response.end(JSON.stringify(json, null, 2));
}
});
});
答案 0 :(得分:2)
您的代码存在一些问题。
首先,您似乎想从网址获取_id
参数并且不知道如何。它存储在this.params
上,因此它this.params._id
。
其次,您应发送给find
的第一个参数是MongoDB查询,在您的情况下为{ _id: this.params._id }
。
第三,那不是你在铁路由器中呈现内容的方式。 render方法的字符串参数是要呈现的模板的名称,而不是项目。
假设myItems
是一个有效的集合,而您的模板名为showItem
,那么您的代码应该是这样的:
Router.route('items/:_id', {
name: 'showItem',
data: function () {
return myItems.find({ _id: this.params._id });
}
});
答案 1 :(得分:0)
尝试这样的事情:
Router.map(function () {
this.route('items/:myItemId', {
data: function(){
return myItems.findOne({_id: this.params.myItemId});
}
});
});
祝你好运!