2014-04-07 87 views
3

使用流星铁路由器哪能要么数据呈现为JSON或简单地显示它的“原始”(没有布局模板)流星铁路由器没有布局模板或JSON查看

基本上我想成为可以这样做:

this.route('rawdata', { 
    path: '/raw/:collection', 
    layoutTemplate: 'nolayout', 
    template: 'raw' 
}) 

其中/生/职位将显示帖子(集合)的原始JSON。

谢谢!

注意

我所知道的JSON endpoint in Meteor 但流星路由器停产,铁路由器不会出现有一个JSON终点的功能。

我也看过https://atmospherejs.com/package/collection-api,但它不适合我的需要,因为我需要能够选择集合/记录的字段的子集。

回答

10

使原始布局模板

<template name="direct_layout"> 
    {{> yield}} 
</template> 

然后用它作为你的layoutTemplate中直接使用您的模板。

this.route('rawdata', { 
    path: '/raw/:collection', 
    layoutTemplate: 'direct_layout', 
    template: 'raw' 
}); 

我不确定您是否将此用作实际代码的占位符。如果您打算使用JSON或实际的原始文本呈现数据。您可能需要考虑使用服务器端路由。你应该做这样的事情,而不是:

注意,这是服务器端的代码,不像它运行在客户端上:

this.route('serverRoute', { 
    where: 'server', 
    path: '/your-route', 
    action: function() { 
    var data = {this_is:'a json object'} 


    this.response.writeHead(200, {'Content-Type': 'application/json'}); 
    this.response.end(JSON.stringify(data)); 
    } 
}); 

看一看服务器端渲染上铁路由器:https://github.com/EventedMind/iron-router/blob/master/DOCS.md#server-side-routing

+0

感谢您的更完整的答案Akshat。 – nelsonic

+1

@nelsonic这个答案应该适合你。 reststop2软件包基本上就是这样做的 - 它出现在铁路由器支持的服务器端路由之前。如果您需要比响应类型更多的灵活性,认证,路由,参数等,请参阅reststop2。 http://github.differential.io/reststop2/ – gerard

+0

你如何调用服务器端路由?它是localhost:3000/raw /:集合吗? – Nate