Javascript 通过Meteor Iron路由器获取Json/Collection的最简单方法
例如,我正在创建一组路由Javascript 通过Meteor Iron路由器获取Json/Collection的最简单方法,javascript,mongodb,meteor,iron-router,Javascript,Mongodb,Meteor,Iron Router,例如,我正在创建一组路由 /-应呈现主页模板 /items-是否应使用items页面模板 /items/weeARXpqqTFQRg275-应使用给定的_id从MongoDB返回项目 这是我努力实现的一个例子 Router.route('items/:_id', function () { var item = return myItems.find(:_id); this.render(item); }); [更新-解决] 通过在服务器端使用Router.map而不是Router.r
/
-应呈现主页模板
/items
-是否应使用items页面模板
/items/weeARXpqqTFQRg275
-应使用给定的_id从MongoDB返回项目
这是我努力实现的一个例子
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));
}
});
});
试着这样做:
Router.map(function () {
this.route('items/:myItemId', {
data: function(){
return myItems.findOne({_id: this.params.myItemId});
}
});
});
祝你好运 您的代码有几个问题 首先,您似乎想从url获取
\u id
参数,但不知道如何获取。它存储在this.params
上,因此它是this.params.\u id
其次,您应该发送到find
的第一个参数是一个MongoDB查询,在您的情况下,它将是{u id:this.params.\u id}
第三,这不是在Iron Router中渲染某些内容的方式。render方法上的string参数是要渲染的模板的名称,而不是项
假设myItems
是一个有效的集合,并且您的模板名为showItem
,那么您的代码应该类似于:
Router.route('items/:_id', {
name: 'showItem',
data: function () {
return myItems.find({ _id: this.params._id });
}
});
你的问题是什么?你想要实现什么?请详细说明。谢谢。获取myItems的结果。请求myapplication.com/items/weeARXpqqTFQRg275后查找(weeARXpqqTFQRg275)您是否查看了?我已经找到了一个解决方案(检查下面的问题),但您的解决方案看起来要短得多,我也会检查:)这令人印象深刻,尽管相当复杂。如果有效的话。我刚刚记得我也使用router.map我会为你们编辑我的答案。嗯,是的,这可能是一个解决方案-路由器匹配定义的路径后,它会用从函数加载的数据呈现模板。我会将其标记为正确答案,但如果任何人需要呈现纯JSON对象而不是网站,请查看顶部我的帖子更新。谢谢