我计划将Meteor用于各种实时日志记录应用程序我的要求非常简单,我将传递日志消息作为请求参数(POST或GET)从各种应用程序和Meteor需要简单地更新集合.我需要访问Meteor服务器代码中的请求参数,并使用传入的logMessage更新Mongo集合.我不能直接从现有应用程序更新Mongo Collection,所以请不要回复建议相同.我想知道如何从Meteor框架中做到这一点,而不是通过添加更多包来做到这一点.
Geo*_*oth 12
编辑:更新为使用铁路由器,流星路由器的继任者.
安装Iron Router并定义服务器端路由:
Router.map(function () {
this.route('foo', {
where: 'server',
action: function () {
doSomethingWithParams(this.request.query);
}
});
});
Run Code Online (Sandbox Code Playgroud)
因此对于类似的请求http://yoursite.com/foo?q=somequery&src=somesource,this.request.query上面函数中的变量将是{ q: 'somequery', src: 'somesource' },因此您可以通过this.request.query.q等等请求单个参数this.request.query.src.我只测试了GET请求,但POST和其他请求类型应该相同; 这适用于Meteor 0.7.0.1.确保将此代码放在Meteor.isServer块中或/server项目文件夹中的文件中.
原帖:
使用Meteorite安装Meteor Router并定义服务器端路由:
Meteor.Router.add('/foo', function() {
doSomethingWithParams(this.request.query);
});
Run Code Online (Sandbox Code Playgroud)
因此对于类似的请求http://yoursite.com/foo?q=somequery&src=somesource,this.request.query上面函数中的变量将是{ q: 'somequery', src: 'somesource' },因此您可以通过this.request.query.q等等请求单个参数this.request.query.src.我只测试了GET请求,但POST和其他请求类型应该相同; 这适用于Meteor 0.6.2.1.确保将此代码放在Meteor.isServer块中或/server项目文件夹中的文件中.
我知道提问者不想添加包,但我认为使用Meteorite安装Meteor路由器在我看来是一种更加面向未来的方式来实现这一点,与访问内部未记录的Meteor对象相比__meteor_bootstrap__.在未来版本的Meteor中最终确定Package API时,安装Meteor Router的过程将变得更加容易(不需要Meteorite),但其他任何内容都不会发生变化,您的代码可能会继续工作而无需修改.
我找到了一种解决方法,可以在Meteor应用程序中添加路由器来处理自定义请求.
它使用流星附带的连接路由器中间件.没有额外的依赖!
把它放在服务器上的Meteor.startup 之前/之外.(CoffeeScript的)
SomeCollection = new Collection("...")
fibers = __meteor_bootstrap__.require("fibers")
connect = __meteor_bootstrap__.require('connect')
app = __meteor_bootstrap__.app
router = connect.middleware.router (route) ->
route.get '/foo', (req, res) ->
Fiber () ->
SomeCollection.insert(...)
.run()
res.writeHead(200)
res.end()
app.use(router)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8702 次 |
| 最近记录: |