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对象而不是网站,请查看顶部我的帖子更新。谢谢