2016-05-01 8 views
1

Iron RouterとStripeで流星を使用しています。すべてがうまくいっていますが、ストライプ充電が完了した後、最終注文完了ページにユーザーをリダイレクトする方法はわかりません。Iron Router Meteor、サーバー側からRouter.goの代替

私のクライアント側では、「支払う」ボタンが表示されているモーダルボックスが表示されます。支払ボタンをクリックすると、ストライプチェックアウトを呼び出して開くイベントが発生します。

その後、ストライプチェックアウトがクライアントで開始され、ユーザーはカードの詳細を入力して支払いを送信することができます。ストライプ経由でカードを請求するサーバーサイドの方法が完了しました。また、結果をログに記録して注文状況を完了するために実行されている他の基本的なデータベースタスクもあります。

アイロンルータを使用してルートを作成しましたが、ストライプ支払いが完了した後でもユーザーのリダイレクトを希望します。

今のところ、モーダルボックスは画面上にとどまり続けます。注文が完了した後にセットアップされた注文ページに、Router.goを送信させようとしています。

私はIron Routerを信じます。Router.goはクライアント側でのみ使用されます。ストライプの処理が完了した後、注文処理を完了してクライアント側のモーダルボックスを消して、ユーザーを最終ページにリダイレクトする方法を教えてください。

私は、サーバー側でRouter.goを使用すると、私はエラーを取得しています:

Exception in callback of async function: TypeError: Object function router(req, res, next) {//XXX this assumes no other routers on the parent stack which we should probably fix 
+0

成功した後にmeteor.callメソッドのコールバックでrouter.go()を実行できませんか? –

+0

私はあなたが言ったことを基本的にやり遂げ、meteor.callの後にこのrouter.goを追加しました – jremi

答えて

0

すでに上のいくつかのロジックを持っていない場合は、離れてのページからユーザーのブラウザを強制することはできませんページを「リモートコントロールする」幸いにも後者にはいくつかのオプションがあります:

ルータを使用している場合は、購読済みのコンテンツの内容に応じて、ルート自体を反応させることができます。あるいは、クライアント側のコードにTracker.autorunまたはobserveChangesブロックを置き、その "control"コレクションへの変更をチェックし、それに応じてRouter.goを実行することができます。

コントロールコレクション用として、のような単純なコレクション:

var Control = new Mongo.Collection('control'); 

はするだろう、とイベントが発生したとき、あなたはサーバーからそれに(Control.insert({route: "newroute"}))を挿入し、クライアント上のコンテンツの変更をチェックたとえば、次のようになります。

関連する問題