如何在流星上使用网址参数。
网址可能如下所示:http://my-meteor.example.com:3000?task_name=abcd1234
我想在流星应用程序的mongodb查询中使用'task_name'(abcd1234)。
例如
Template.task_app.tasks = function () {
return Tasks.find({task_name: task_name});
};
感谢。
答案 0 :(得分:19)
您可能希望使用路由器来处理路径并为不同路径呈现某些模板。铁路由器包是最好的一个。如果您还没有使用它,我会强烈推荐它。
使用iron-router后,获取查询字符串和url参数非常简单。您可以在此处查看文档部分:https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#route-parameters
对于您给出路线的示例,看起来像这样:
Router.map(function () {
this.route('home', {
path: '/',
template: 'task_app'
data: function () {
// the data function is an example where this.params is available
// we can access params using this.params
// see the below paths that would match this route
var params = this.params;
// we can access query string params using this.params.query
var queryStringParams = this.params.query;
// query params are added to the 'query' object on this.params.
// given a browser path of: '/?task_name=abcd1234
// this.params.query.task_name => 'abcd1234'
return Tasks.findOne({task_name: this.params.query.task_name});
}
});
});
这会创建一条路线,使'task_app'模板呈现第一个与任务名称匹配的任务的数据上下文。
您还可以使用Router.current()从模板助手或其他函数访问url参数和其他路由信息,以获取当前路由。因此,例如在帮助程序中,您可以使用Router.current().params.query.task_name
来获取当前任务名称。 Router.current()是一个反应元素,因此如果在反应计算中使用它,当对路径进行任何更改时,计算将重新运行。