2016-06-30 6 views
0

私は角型2 /イオン2のTypescriptで旅行アプリケーションに取り組んでいます。私は自分のサービス/オブジェクトをどのようにモデル化するかを理解する必要があります。このアプリにはユーザーがいます。角度2 /イオン2アプリケーションのデータモデルを調べるにはどうすればいいですか

各ユーザーは全体的なトリップを作成できます。 「ヨーロッパ2016」と名付けることができます。その後、複数の日数を追加することができます。彼らは14日間旅行している可能性があります。毎日彼らは何時に活動があるか、その活動がどこであるかなどを含むその日をどうするかについての計画を立てることができます...天気をチェックしたり、ホテルの情報などを毎日追加することもできます。

は、大雑把に(すみません、これは醜いです)

Trip: { 
    "name": "Europe 2016", 
    "tripPlans": [ 
    {"day1": [{plan1: do something, time: 01000}, {plan2: do something else, time: 01000}}], "time": "0800", "date":"09/01"2016, hotel, weather}, 
    {"day2": [{plan1: do something, plan2: do something}], "time": "0800", "date":"09/01"2016, hotel info, weather info} 
    ] 
} 

も旅行の最初と最後の日付を知っておく必要があるだろう、それがどのように見えるかもしれません。

私も「ゴッサムで最も一般的な活動」

これは、コードとに学習時間の100年代を過ごした後、私の最初の主要なアプリケーションであるように、背中やクエリのユーザグループが人気を見つける何のために行くことをお勧めします

その私の個人的なプロジェクトは、私が勉強に興奮し続けている。それは私の個人的な問題を解決します。私はこれを理解するのに役立つ参考資料やリソースを見つけるのに苦労しています。

フレームワークの選択に多くの時間を要したので、私はそれに固執したいと思います。これまではPouchDB/CouchDBを使用しようとしていました。私は現在、Ionicのモバイル版のみを現在構築しています。

そのgithubのプロジェクトを見てみても、何かアドバイスをいただければ幸い、あなたが保存したチュートリアルなど

答えて

1

私はほとんどのCouchDBで動作しますが、私はまたPouchDBとイオンアプリの開発に着手しました/ CouchDB。まず、ネストされたドキュメントがたくさんある場合はNoSQLが優れていることを知る必要がありますが、場合によっては「関係」を作る選択肢がありません。

まず、私は少しあなたのデータモデルを作り直し:

{ 
    "name": "Europe 2016", 
    "type": "trip", 
    "tripPlans": [{ 
     "name": "This is the first plan", 
     "days": { 
      "day1": [{ 
       "registeredActivityId": null, 
       "plan": "do something", 
       "time": 1000 
      }, { 
       "registeredActivityId": "activty_goToTheMoon", 
       "plan": "Go to the moon and the previous activity", 
       "time": 1000 
      }], 
      "time": "0800", 
      "date": "09/01/2016", 
      "hotel": "Hotel name", 
      "weather": "Sunny" 
     } 
    }] 
} 

さて、あなたはいくつかのオプションがあります:

  1. をあなたはこの1

    のようなあなたのネストされた活性物質のビューを構築することができます
    function(doc) { 
    if (doc.type == "trip" && doc.tripPlans && doc.tripPlans.join) 
        for (var i = 0; i < doc.tripPlans.length; i++) { 
         var plan = doc.tripPlans[i]; 
         if (plan.days) 
          for (var n in plan.days) 
           if (plan.days.hasOwnProperty(n)) { 
            var day = plan.days[n]; 
            //We emit the activity id for a better tracking. 
            //If it's not available, we emit the description(not recommanded) 
            emit(day.registeredActivityId ? day.registeredActivityId : day.plan); 
           } 
        } 
    

    }

  2. あなたは、ネストされたアプローチを使用して

ドキュメント間の関係を作ることができ、ビューが頻繁に計算されている場合より高速クエリを作ります。そうでない場合、「リレーショナル・アプローチ」により、例えば「事前定義されたアクティビティ」を簡単にリンクすることができます。さらなる情報が必要な場合は、プライベートで私に連絡することができます。

+0

お返事いただきありがとうございます。 @AlexisCôté本当に助かりました。 – dhndeveloper

+0

@ audan2009よろしくお願いします! –

+0

@ audan2009この回答を公式の回答としてマークしてください –

関連する問題