income_funds
私はデータベースに2つのコレクションを持っていますexpenditure_funds
:
income_funds
timestamp
amount
status (not confirmed, confirmed, refunded)
expenditure_funds
timestamp
amount
現在の口座残高を取得し、使用に関するレポートを取得する必要があります。このコレクションを使用して課金ロジックを実装するにはどうすればよいでしょうか?
最も簡単な方法 (追加データなし):
- 口座残高を取得するには
sum(confirmed income_funds) - sum(expenditure_funds)
- 報告書をもらう 期間別収支資金をもらう
しかし、常に口座残高を計算しなければならないのは好きではありません。
アカウント コレクションを追加します。
account
コレクションを追加します:
account
balance
- アカウントの残高を取得するには
account.balance
- 以前の方法でレポートを取得する
しかし、資金が変更された (ステータスが追加または変更された) たびに残高を変更する必要があるのは好きではありません。アカウントの残高を確認するには、常に最初の方法ですべての資金を計算する必要があります。間違えると、いつ、どのように起こったのかわかりません。
期間コレクションを追加:
period
コレクションを追加します:
period
is_closed (yes, no)
start_timestamp
end_timestamp
start_balance
end_balance
- 口座残高を最後に返す
period.end_balance
- 以前の方法でレポートを取得しますが、期間ごとにタイムスタンプを取得するのは簡単です
end_balance
期間中に資金が変更された場合はいつでも変更する必要があります。しかし、私は期間ごとに残高を確認することができ、もし間違いがあれば、それがこの期間に起こったことを知ることができます.
最後の方法が一番気に入っていますが、誰かが私の結論でアドバイスをくれたり、他の解決策を知っているかもしれません.