2016-09-11 3 views
0

Я использую базу данных Firebase для своего мобильного и веб-приложения. Я хотел получить совет, как структурировать дерево JSON. У меня есть следующий случай использования:Как создать базу данных Firebase

Пользователь мобильного приложения регистрируется и получает все близлежащие рестораны в списке. Пользователь устанавливает заказ в одном ресторане. Владелец ресторана использует веб-приложение или мобильное приложение для просмотра входящих заказов и принимает их. После принятия заказа пользователь мобильного приложения получает ответ, что его заказ принят. Теперь моя идея структуры была следующая:

enter image description here

SO мы имеем один узел на верхнем уровне для каждого restaurant и каждый restaurant узла содержит requests узла, который сохраняет все запросы для этого ресторана.

Является ли эта структура нормально или она может быть структурирована лучше?

+1

Вы включили изображение дерева JSON в свой вопрос. Пожалуйста, замените это на фактический JSON как текст, который вы легко можете получить, нажав кнопку «Экспорт» в консоли базы данных Firebase. Наличие JSON в качестве текста делает его доступным для поиска, позволяет нам легко использовать его для тестирования с вашими фактическими данными и использовать его в нашем ответе, и в целом это просто хорошая вещь. –

+1

В NoSQL вы часто моделируете данные о том, как ваше приложение использует его. Для хорошего ознакомления читайте эту статью в [Моделировании данных NoSQL] (https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/). –

ответ

2

Рассмотрите структуру данных, подобную этой, вы не хотите получать весь запрос при получении ресторана и таким образом, вы можете получить все запросы в ресторан и все запросы от конкретного пользователя.

{ 
    "requests": { 
     "req1": { 
      "status": 0, 
      "time": 1473593287, 
      "user": { "u2": true } 
     }, 
     "req2": { 
      "status": 0, 
      "time": 1473593227, 
      "user": { "u1": true } 
     }, 
     "req3": { 
      "status": 0, 
      "time": 1473594287, 
      "user": { "u1": true } 
     }, 
     "req4": { 
      "status": 0, 
      "time": 1473594227, 
      "user": { "u2": true } 
     }, 
    }, 
    "restaurant-requests": { 
     "resA": { 
      "req1": true, 
      "req2": true 
     }, 
     "resB": { 
      "req3": true, 
      "req4": true 
     } 
    }, 
    "restaurants": { 
     "resA": { 
      "name": "Example Restaurant A", 
      "address": "1 Example Street" 
     }, 
     "resB": { 
      "name": "Example Restaurant B", 
      "address": "2 Example Street" 
     } 
    }, 
    "user-requests": { 
     "u1": { 
      "req2": true, 
      "req3": true 
     }, 
     "u2": { 
      "req1": true, 
      "req4": true 
     } 
    }, 
    "users": { 
     "u1": { 
      "address": "123 Example Street" 
     }, 
     "u2": { 
      "address": "124 Example Street" 
     }, 
    }, 
} 
+0

Но это означает, что если есть новый запрос. Я должен добавить узел через код андроида к узлу 'request' и дополнительный узел к узлу' restaurant-requests \ resX' и дополнительный узел к узлу 'user-requests \ uX', правильно? Или существует способ, которым только один запрос мог бы выполнить все эти изменения только через один запрос? – farahm

+2

haha ​​добро пожаловать в firebase – Callam

+0

Потратил меня на то, чтобы обернуть голову вокруг концепции, но наличие этих дубликатов может сэкономить ваше время пользователя – Callam

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