2016-06-30 1 views
0

Я работаю над приложением перемещения в Angular 2/Ionic 2 с помощью Typcript. Мне нужно выяснить, как моделировать мои сервисы/объекты. Это приложение будет иметь пользователей.Как определить модель данных для приложения с угловым 2/Ionic 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. Вы можете построить взгляд на ваших вложенных активов, как это один

    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 Отметьте этот ответ как официальный ответ, если он вам поможет –

Смежные вопросы