我打算使用Meteor作为各种实时日志记录应用程序 我的要求很简单,我将通过日志消息作为请求来自各种应用程序的参数(POST或GET)和Meteor需要简单地更新集合。 我需要访问Meteor服务器代码中的请求参数,并使用传入的logMessage更新Mongo集合。我无法直接从现有的应用程序更新Mongo Collection,所以请不要提供相同的建议。我想知道如何从Meteor框架中做到这一点,而不是通过添加更多软件包来做到这一点。如何访问流星中的请求参数?
回答
也许这一个会帮助你? http://docs.meteor.com/#meteor_http_post
这是为了创建一个外部http文章,而不是传入的文章。 – nubela 2013-04-29 13:14:15
就目前情况而言,当URL被击中时,服务器端路由或特定操作不受支持。所以要做你想做的事情并不容易。这里有一些建议。
你大概可以达到你想要的东西通过借款所使用的
oauth2
包放在AUTH分支技术:https://github.com/meteor/meteor/blob/auth/packages/accounts-oauth2-helper/oauth2_server.js#L100-109然而,这是不是真的支持,所以我不能确定这是一个好理念。
您的其他应用程序实际上可以使用DDP更新集合。这可能比听起来容易。
您可以使用接受POST/GET请求并使用DDP与流星服务器通话的中间应用程序。这可能是技术上最简单的事情。
实际上,流星路由器_does_除了处理更常见的客户端路由之外,还处理服务器端路由。看到它的github页面上的文档:https://github.com/tmeasday/meteor-router – 2013-05-13 06:14:47
哈哈,你当然是对的,但是当我写这个答案我还没有添加到路由器的功能;) – 2013-05-13 07:11:20
我找到了一个解决方法,以路由器添加到流星应用程序来处理自定义的请求。
它使用与流星一起发货的连接路由器中间件。没有额外的依赖!
把这个之前/之外 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)
这应该记录在docs.meteor.com(至少直到更正式的解决方案出来:) @Geoff – 2012-10-10 22:24:40
如果您想要使用自动查询和正文解析,请添加以下内容: app.use(connect.query()) .use(connect.bodyParser()) – 2013-01-18 07:17:06
注意:从0.6.0开始,这将不起作用 - 尽管查看NPM.require('...'); – emgee 2013-04-19 10:23:43
编辑:更新使用Iron Router,继任者流星路由器。
Install Iron Router并定义一个服务器端路线:
Router.map(function() {
this.route('foo', {
where: 'server',
action: function() {
doSomethingWithParams(this.request.query);
}
});
});
所以对于像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);
});
因此,对于像http://yoursite.com/foo?q=somequery&src=somesource
的请求,变量this.request.query
以上将是{ q: 'somequery', src: 'somesource' }
,因此您可以通过this.request.query.q
请求个别参数nd this.request.query.src
等。我只测试了GET请求,但POST和其他请求类型应该工作相同;这适用于Meteor 0.6.2.1。请确保将此代码放置在项目的Meteor.isServer
区块或/server
文件夹的文件中。
我知道提问者不希望添加包,但我觉得用Meteorite安装Meteor Router在我看来,实现这个与访问像__meteor_bootstrap__
内部无证流星对象作为一个更面向未来的方式。当Package API在Meteor的未来版本中完成时,安装Meteor Router的过程将变得更加容易(不需要Meteorite),但没有其他可能会改变,并且您的代码可能会继续工作而无需修改。
从Iron Router> = 1.0开始,'this.request.query'已被弃用于'this.params.query' – mrkre 2015-07-09 03:36:27
@ Geoffrey-Booth我一直试图从GSM屏蔽发送数据,并且这行代码有一个GET我只是将它切换为POST,尽管是否需要'Meteor.call('POST''或Iron Router已经处理了这个?'char request [] =“GET /test-get-post.php ?a = 1&b = 2 HTTP/1.1 \ r \ n主机:test.libelium.com \ r \ n内容长度:0 \ r \ n \ r \ n“;' – mjwrazor 2016-04-01 16:50:38
使用IronRouter,它是如此简单:
var path = IronLocation.path();
- 1. 如何访问Rails的请求参数
- 2. 访问Nodejs中的请求参数
- 3. 访问请求中的参数
- 4. 如何访问流星中的DOM?
- 5. 如何访问流星中的mongos db.system.js?
- 6. 在Sails中访问JSON请求参数
- 7. 如何访问CarrierWave上传器中的请求参数?
- 8. 如何访问EL中的请求参数
- 9. 如何访问kademi模板中的请求参数?
- 10. 如何访问请求中传递的参数
- 11. 如何访问百里香叶中的ajax请求参数
- 12. 如何在Struts2中访问请求参数?
- 13. 如何在外部mxml中访问html请求参数
- 14. 如何在响应关闭中访问Alamofire请求参数?
- 15. 如何在帖子请求中访问参数
- 16. 流星获取请求
- 17. 流星,NPM和请求
- 18. 添加参数请求()流
- 19. 从Grails webflow访问请求参数
- 20. 流星包中的HTTP请求?
- 21. Rails - 如何从助手的视图访问请求参数
- 22. 如何访问特定的请求参数
- 23. 如何访问HTTP请求?
- 24. 如何访问插件中的请求?
- 25. 如何访问HTML中的Collectin对象数据使用流星?
- 26. 如何访问Cache.addAll()请求数组
- 27. 在访问URL参数流星反应的的createContainer
- 28. 如何访问程序请求参数LLY在ADF
- 29. 如何使用JSP EL动态访问请求参数?
- 30. 如何在流星帐户中请求额外的oauth范围
我不知道是否有可能访问底层的node.js实例。但是,如果你能以某种方式获得它,一个快速的'app.post('/',function(request,response){});'就可以做到这一点。 只是一个想法,但我真的不知道这是否可能。 – 2012-08-03 16:12:32