さまざまなリアルタイム ロギング アプリケーションに Meteor を使用する予定です。私の要件は非常に単純です。さまざまなアプリケーションからログ メッセージをリクエスト パラメータ (POST または GET) として渡し、Meteor は単にコレクションを更新する必要があります。Meteor サーバー コードで要求パラメーターにアクセスし、受信した logMessage で Mongo コレクションを更新する必要があります。Mongo Collection を既存のアプリケーションから直接更新することはできないため、同じことを示唆する返信はしないでください。Meteor フレームワークからそれを行う方法を知りたいのですが、パッケージを追加することはできません。
5 に答える
カスタム リクエストを処理するために Meteor アプリケーションにルーターを追加する回避策を見つけました。
meteor に同梱されている connect ルーター ミドルウェアを使用します。余分な依存関係はありません!
これをサーバーの Meteor.startup の前/外側に配置します。(コーヒースクリプト)
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)
IronRouter を使用すると、とても簡単です。
var path = IronLocation.path();
現状では、サーバー側のルーティングや、URL がヒットしたときのサーバー側での特定のアクションはサポートされていません。ですから、やりたいことをするのは簡単ではありません。ここにいくつかの提案があります。
おそらく
oauth2
、auth ブランチのパッケージで使用されている手法を借りることで、目的を達成できます: https://github.com/meteor/meteor/blob/auth/packages/accounts-oauth2-helper/oauth2_server.js#L100 -109ただし、これは実際にはサポートされていないため、良いアイデアかどうかはわかりません。
他のアプリケーションは、DDP を使用してコレクションを実際に更新できます。これはおそらく思ったより簡単です。
POST/GET リクエストを受け入れ、DDP を使用して Meteor サーバーと通信する中間アプリケーションを使用できます。これはおそらく技術的に最も簡単な方法です。
多分これはあなたを助けるでしょうか? http://docs.meteor.com/#meteor_http_post