Структура данных приложения Todo с использованием Cloud Firestore и React - PullRequest
0 голосов
/ 28 декабря 2018

Учитывая, что я использую Cloud Firestore и React, какая из представленных ниже структур данных будет лучшей для простого приложения ToDo?

Я использую список ToDos в качестве массива в своем Reactсостояние.

ВАРИАНТ 1

  • задач (коллекция)
    • список задач (документ)
      • список задач-контент (поле массива)
        • «ToDo 1»
        • «ToDo 2»
        • «ToDo 3»

enter image description here

ВАРИАНТ 2

  • задачи (сборник)
    • todoId1 (автоматически сгенерированный идентификатор документа)
      • сообщение: «ToDo 1»
    • todoId2 (автоматически сгенерированный идентификатор документа)
      • сообщение: «ToDo 2»
    • todoId3 (автоматически сгенерированный идентификатор документа)
      • сообщение: «ToDo 3»

enter image description here

Я полагаю, вариант 2 - правильный выбор, верно?Кто-нибудь может объяснить, почему это так?

Используя Вариант 1, я бы сразу получил массив для перехода в состояние, вместо того, чтобы перебирать объект QuerySnapshot в Варианте 2.

Спасибо.

1 Ответ

0 голосов
/ 28 декабря 2018

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

Максимальный размер документа: 1 МБ (1 048 576 байт)

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

Если вы храните большой объем данных в массивах, и эти массивы должны обновляться партиямиУ пользователей есть еще одно ограничение, о котором вам нужно позаботиться.Таким образом, вы ограничены 1 записью в секунду на каждый документ.Поэтому, если у вас есть ситуация, когда многие пользователи пытаются одновременно записать / обновить данные в одни и те же документы, вы можете увидеть, что некоторые из этих операций записи завершаются неудачно.Поэтому будьте осторожны и с этим ограничением.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...