Meteor アプリを使用するためのチュートリアルを作成する良い方法を見つけようとしています。視覚的に、私は良いアプローチを考え出し、これをスマートなパッケージに詰め込みました:
ただし、理解するのがかなり難しいことが判明した 2 番目の部分があります。
多くの場合、チュートリアル アプリには偽のデータを読み込む必要があります。これは、生成が難しい可能性のある実際のデータを入力する必要なく、ユーザーにインターフェイスを示すためです。(たとえば、PlanApple のデモであるhttps://www.planapple.com/trip/demo/349/を参照してください)。Meteor では、アプリのコンテンツは基本的にいくつかのコレクションのコンテンツによって定義されるため、これを行うには次の 2 つの方法があります。
- チュートリアル用と実際のアプリ用の 2 つのコレクション セットを維持します。最初のセットはチュートリアルに使用し、2 番目のセットはユーザーが実際にアプリを使用するときに使用します。
- コレクションの 1 つのセットを使用し、サブスクリプションを使用してチュートリアル中に偽のデータを入力し、ユーザーが別のサブスクリプションを使用して実際にアプリを使用しているときに実際のデータを入力します。
最初のアプローチは明らかに悪いです。つまり、チュートリアルとして使用されているかどうかにとらわれずにアプリを作成することはできず、アプリをif/else
提示する際に不必要な面倒なリアクティブ ロジックがたくさんあるということです。さらに、アプリに複数のコレクションがある場合、これを維持するのは非常に困難です。
2 番目のアプローチは、物事を行うためのより Meteor 風の方法のようです。私たちが基本的に望んでいるのは、サーバー パブリケーションがすべてのクライアント コレクションに偽のデータを入力し、変更がサーバーに伝播することなくクライアント側でデータを操作できるようにすることです。クライアントは基本的にサーバーのチュートリアル データのコピーを取得し、それに対してローカルな変更のみを行い、その後破棄されます。これは次の 2 つに要約されます。
カスタム サブスクリプションを介してサーバーからクライアントに、通常のアプリと同じ名前のコレクションに偽のデータを送信します。https://stackoverflow.com/a/18880927/586086に書いたように、これは間違いなく可能です
データの初期ロード後にクライアント (サーバー上) からの挿入、更新、および削除を無視します。しかし、それらがローカルで発生することを許可します。これは、 http://docs.meteor.com/#meteor_collectionのように、null (名前のない) コレクションを作成した場合にも可能です。
問題は、上記の 2 つの手順をそれぞれ個別に実行することは可能ですが、両方を実行したいということです。複雑な作業を避けるために、クライアントが実際のデータを使用する場合と同じ名前のコレクションにデータをロードする必要があります。コレクションの 2 つのセットを持つロジックを制御しますが、変更をローカルのみにして、チュートリアル中にサブスクリプションに反映されないようにしたいと考えています。
誰でもこれを行う方法についてアイデアがありますか?
2 番目の部分が可能かどうかについての関連する質問: Meteor データベース mutator は、Meteor.method から呼び出されているか、通常のコードから呼び出されているかをどのように認識しますか?
編集:チュートリアルで基本的にやりたいことは、{ https://stackoverflow.com/a/19523301/586086 } のようにローカル Meteor Collection に対して直接挿入することのようです。ただし、これを明示的に指定する代わりに、関連するすべてのミューテーターのチュートリアル中に一般的にこの動作をオンにする方法はありますか?