今週から Meteor を使い始めましたが、今後できるだけ多くのプロジェクトで Meteor を使いたいと思っています。
今日の午後、岩にぶつかりましたが、私たちのエコシステムでは、ノード/流星の外からmongodb内でデータを処理および挿入できる必要があります。
これを行うための 2 つの主なソリューションは、Hbase クラスターでの MapReduce と、CSV ファイルを解析して結果を MongoDB に挿入する Python スクリプトです。
現在、Meteor アプリケーション内で MongoDB のデータを使用できる唯一の方法は、データが Meteor (コンソールまたはフォーム) を介して追加された場合です。
簡単な例を見てみましょう。_id を介して投稿にアクセスできるようにしたいと考えています。Iron Router はそれで問題なく動作し、URL を構築するためのヘルパーを提供します。同じヘルパーを使用して、3 つの異なる使用法から 2 つの異なる結果を見つけることができました。
ObjectId が間違っているようです。これらは以前に遭遇した 3 つのケースです。
http://0.0.0.0:3000/post/PAXEqRBB7RiNrdTTT => Inserted by Meteor, works fine
http://0.0.0.0:3000/post/ObjectId(526fe0701d41c894b9105bff) => Inserted by python, broken
http://0.0.0.0:3000/post/ObjectId(526fe0701d41c894b8715bff) => Inserted with meteor mongo shell
そのため、流星以外で MongoDB 内に挿入されたものにはアクセスできません。
Github で関連する問題をいくつか見つけました。主な問題は次のとおりです。
https://github.com/meteor/meteor/issues/61
しかし、修正がロードマップにあったため、8 か月前にクローズされました。meteor の最新バージョン ( 0.6.6.2 ) を使用していますが、これはまだ修正されていないようです。
私の質問は、どのような回避策を見つけることができますか? Python 内で Meteor ObjectID 生成のような JS メソッドを呼び出すことができないので、何が最善の解決策でしょうか?
Node DDP アプリを使用して、MongoDB へのすべての外部挿入を処理する必要がありますか?