Firebase: управление отношениями один-ко-многим в Cloud Firestore - PullRequest
2 голосов
/ 28 февраля 2020

Я разрабатываю одно приложение для управления основной учетной записью c, в которой в качестве бэкэнда используется Firebase. Но в структуре Firestore, я немного запутался, что как мне управлять транзакциями для учетной записи в Cloud Firestore.

Как я пришел из SQL фон, я очень смущен, чтобы сделать это.

Для одного аккаунта у меня будет много транзакций, содержащих кредитные или дебетовые данные.

Может кто-нибудь предложить мне какой-нибудь базовый c и эффективный способ реализации this?

Это моя существующая реализация, но для каждой учетной записи я хочу добавить транзакцию.

Под транзакциями я подразумеваю такие же банковские транзакции, как и вашу банковскую книжку.

Я хочу добавить вышеуказанные данные в транзакцию.

amount -> how much amount I have credited/debited

date -> credit/debit date

details -> date of transaction

is_credit -> bool for this account is credit or debit

balance -> final balance after this transaction

enter image description here

1 Ответ

4 голосов
/ 28 февраля 2020

Если вы хотите добавить «транзакции» к существующей учетной записи, у вас есть два варианта. Поскольку транзакция - это объект с различными свойствами (сумма, дата, детали, is_credit, баланс), вы можете добавить такой объект в массив «транзакций», который может быть свойством в вашем документе учетной записи. Ваша схема должна выглядеть следующим образом:

Firstore-root
  |
  --- accounts (collection)
        |
        --- pTSc...0Onp
              |
              --- address: "1200"
              |
              --- //Other details
              |
              --- transactions (array)
                    |
                    --- 0
                    |   |
                    |   --- amount: 300
                    |   |
                    |   --- date: February 28, 2020 at 3:37:59 PM UTC+3
                    |   |
                    |   --- details: "Transaction details"
                    |   |
                    |   --- is_credit: true
                    |   |
                    |   --- balance: 1200
                    |
                    --- 1
                        |
                        --- amount: 100
                        |
                        --- date: February 28, 2020 at 5:21:22 PM UTC+3
                        |
                        --- details: "Other transaction details"
                        |
                        --- is_credit: false
                        |
                        --- balance: 3600

Это решение будет работать только при условии, что вы на 100% уверены, что размер документа останется в пределах ограничения 1Mib :

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

Если это не так, то вам следует рассмотреть возможность добавления этих Transaction объектов во вложенную коллекцию, которая может существовать в документе Account. В этом случае нет ограничений на количество документов, которые могут быть добавлены к этому подколлекции.

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