2016-06-30 11 views
0

Ich arbeite an einer Reiseanwendung in Angular 2/Ionic 2 mit Typescript. Ich muss herausfinden, wie ich meine Dienste/Objekte modelliere. Diese App wird Benutzer haben.Wie finde ich Datenmodell für Angular 2/Ionic 2 Anwendung

Jeder Benutzer kann eine allgemeine Reise erstellen. Man könnte es "Europa 2016" nennen. Dann könnten Sie mehrere Tage hinzufügen. Sie könnten für 14 Tage reisen. Jeden Tag können sie planen, was an diesem Tag zu tun ist, einschließlich Dinge wie wann die Aktivität ist, wo diese Aktivität ist, etc ... Sie können auch das Wetter überprüfen, Hotelinformationen hinzufügen, etc. jeden Tag.

können grob es sieht so aus (sorry das ist hässlich)

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} 
    ] 
} 

Bräuchte auch den ersten und letzten Tag der Reisen kennen.

ich soll auch für Rücken und Abfrage gehen, was die Benutzergruppe

Dies ist meine erste große Anwendung nach dem Lernen 100 von Stunden zu verbringen, um Code und die beliebten, wie „die häufigste Aktivität in Gotham“ findet meine persönliche Projekte haben mich immer wieder neugierig gemacht. Es löst ein persönliches Problem von mir. Ich habe den Punkt erreicht, an dem es mir schwer fällt, gute Beispiele/Ressourcen zu finden, die mir helfen, dies herauszufinden.

Ich habe eine Menge Zeit in die Rahmenwahl versenkt, also würde ich gerne dabei bleiben. Bisher habe ich versucht, PouchDB/CouchDB zu verwenden. Ich baue derzeit gerade die mobile Version in Ionic.

Jede Beratung wäre sehr, auch wenn seine GitHub Projekte gewürdigt werden, zu betrachten, Tutorials, die Sie gespeichert haben, usw.

Antwort

1

ich meistens mit CouchDB arbeiten, aber ich habe auch ein Ionic entwickeln App mit PouchDB gestartet/CouchDB. Zuallererst müssen Sie wissen, dass NoSQL gut ist, wenn Sie viele verschachtelte Dokumente haben, aber manchmal haben Sie nicht die Wahl, "Relationen" zu machen.

Zunächst überarbeitete ich ein bisschen Ihr Datenmodell:

{ 
    "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" 
     } 
    }] 
} 

Jetzt haben Sie einige Optionen:

  1. Sie einen Blick auf Ihren verschachtelten Wirkstoffen wie diese

    bauen
    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. Sie könnten die verschachtelten Ansätze machen schnellere Abfrage machen Beziehungen zwischen Ihren Dokumenten

verwenden, wenn die Ansichten oft berechnet werden. Ansonsten erleichtert der "relationale Ansatz" beispielsweise die Verknüpfung von "vordefinierten Aktivitäten". Sie können mich privat kontaktieren, wenn Sie weitere Informationen benötigen.

+0

Vielen Dank für Ihre Zeit zu reagieren! @ AlexisCôté Es war sehr hilfreich. – dhndeveloper

+0

@ audan2009 Gern geschehen! –

+0

@ audan2009 Markieren Sie diese Antwort als offizielle Antwort, wenn es Ihnen geholfen hat –