Meteor - 如何从 URL 参数获取服务器数据?
Meteor - How can I get server data from a URL parameter?
我正在尝试 return 基于 MeteorJS 路由上的 URL 参数的不同数据。
在 nodejs 背景下,我会这样做:
testPage = function (req, res, next) {
//Got parameter query from url
console.log('Getting at /testPage/:query '+req.params.query);
//do something with that parameter, say make an HTTP call or query database
var newThing = req.params.query+"hi";
// render the page
var data = {
foo: newThing
};
res.render('testPage', data);
};
Meteor 不支持服务器端渲染,所以不行了。我仍然在思考 Meteor 的单页客户端渲染;我应该如何在 Meteor 中解决这个问题?
我的第一次尝试(使用 IronRouter):
Router.route('/testPage/:query', function () {
console.log("Got param at /testPage/:query "+this.params.query);
if(Meteor.isServer){
console.log("This code may never be called?");
//Otherwise, make an HTTP call
// and then somehow pass the data back to the client...
}
this.render("query");
});
这是我可以用反应变量做的事情吗?或者从客户端发出 AJAX 调用以单独的服务器端点?
iron-router 的规范模式是使用路由参数订阅数据:
Router.route('/foo/:bar',{ // Route takes a single parameter
name: 'foo',
waitOn: function(){
return Meteor.subscribe('fooPublication', this.params.bar);
}
});
在此示例中,this.params.bar
是路由的唯一参数。它作为参数传递给 Meteor.subscribe
。服务器可以使用该参数来决定将什么发布回客户端。 waitOn
保证数据在模板呈现时在客户端可用。
您可以将数据作为第二个参数传递给 .render 方法
Router.route('/testPage/:query', function () {
console.log("Got param at /testPage/:query "+this.params.query);
if(Meteor.isServer){
console.log("This code may never be called?");
//Otherwise, make an HTTP call
// and then somehow pass the data back to the client...
}
this.render("query", {data: queryResult });
});
我正在尝试 return 基于 MeteorJS 路由上的 URL 参数的不同数据。
在 nodejs 背景下,我会这样做:
testPage = function (req, res, next) {
//Got parameter query from url
console.log('Getting at /testPage/:query '+req.params.query);
//do something with that parameter, say make an HTTP call or query database
var newThing = req.params.query+"hi";
// render the page
var data = {
foo: newThing
};
res.render('testPage', data);
};
Meteor 不支持服务器端渲染,所以不行了。我仍然在思考 Meteor 的单页客户端渲染;我应该如何在 Meteor 中解决这个问题?
我的第一次尝试(使用 IronRouter):
Router.route('/testPage/:query', function () {
console.log("Got param at /testPage/:query "+this.params.query);
if(Meteor.isServer){
console.log("This code may never be called?");
//Otherwise, make an HTTP call
// and then somehow pass the data back to the client...
}
this.render("query");
});
这是我可以用反应变量做的事情吗?或者从客户端发出 AJAX 调用以单独的服务器端点?
iron-router 的规范模式是使用路由参数订阅数据:
Router.route('/foo/:bar',{ // Route takes a single parameter
name: 'foo',
waitOn: function(){
return Meteor.subscribe('fooPublication', this.params.bar);
}
});
在此示例中,this.params.bar
是路由的唯一参数。它作为参数传递给 Meteor.subscribe
。服务器可以使用该参数来决定将什么发布回客户端。 waitOn
保证数据在模板呈现时在客户端可用。
您可以将数据作为第二个参数传递给 .render 方法
Router.route('/testPage/:query', function () {
console.log("Got param at /testPage/:query "+this.params.query);
if(Meteor.isServer){
console.log("This code may never be called?");
//Otherwise, make an HTTP call
// and then somehow pass the data back to the client...
}
this.render("query", {data: queryResult });
});