Я создаю сайт с использованием Couchdb и ReactJS.
На одной из моих страниц отображается список до 10 000 финансовых транзакций, каждая из которых состоит из:
- дата
- в количестве
- из суммы
- получатель
- пункт категории
- примечания
У меня есть Стратегия разбивки на страницы и загружать и отображать только 100 транзакций одновременно.
В любой момент времени я хочу иметь возможность поиска в одном столбце - я использую раскрывающийся список, чтобы указать функции поиска, какой индекс использовать для поиск.
Я также хочу иметь возможность сортировать каждый столбец.
До сих пор я использовал несколько представлений, и у меня все вышеуказанные функции работают.
Во время разработки Я использовал строку для элемента категории. Теперь, когда я разобрался, как заставить все вышеперечисленное работать, мне нужно правильно обработать запись в столбце элемента категории.
Элемент категории принадлежит категории, поэтому категория может иметь одну или несколько категорий. элементы, поэтому между категорией и элементами существует отношение один ко многим.
Каждый txn может иметь один и только один элемент категории.
Категория состоит из небольшого числа полей .
Элемент категории состоит из небольшого числа полей.
Я изо всех сил пытаюсь найти лучший подход к этому.
Я рассмотрел каждое из подходы, описанные в https://docs.couchbase.com/server/5.0/data-modeling/modeling-relationships.html.
На данный момент я рассматриваю один из следующих подходов, и мне было интересно, если у кого-нибудь есть какие-либо советы - у меня есть примеры txns, cats и элементы cat в конце этого сообщения?
- Вставить элемент cat в txn и, надеюсь, выяснить, как выполнять поиск и сортировку по элементу cat item.name
- Отказаться от нумерации страниц d загрузить все txns в виртуальный домен, отсортировать и выполнить поиск непосредственно в этом домене
В настоящее время каждый отдельный элемент является отдельным документом, и я использую ссылки для поддержания отношений. Я подумал об использовании идентификатора для хранения данных поиска и сортировки, но я не понимаю, как это будет работать, чтобы дать мне все, что мне нужно.
Txn
{
"_id": "1",
"type": "txn"
"date": "2020-01-20",
"cat": "3",
"notes": "xxxx",
"out": 10,
"in": 0
}
Категория
{
"_id": "2",
"type": "cat",
"name": "Everyday Expenses",
"weight": 2
}
Элемент категории
{
"_id": "3",
"type": "catitem",
"cat": "2",
"name": "Groceries (£850)",
"weight": 0,
"notes": "blah, blah, blah"
}
Я работаю ReactJS на node.js и использую pouchdb .