Couch DB моделирование отношений - поиск и сортировка - PullRequest
1 голос
/ 23 апреля 2020

Я создаю сайт с использованием Couchdb и ReactJS.

На одной из моих страниц отображается список до 10 000 финансовых транзакций, каждая из которых состоит из:

  • дата
  • в количестве
  • из суммы
  • получатель
  • пункт категории
  • примечания

У меня есть Стратегия разбивки на страницы и загружать и отображать только 100 транзакций одновременно.

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

Я также хочу иметь возможность сортировать каждый столбец.

До сих пор я использовал несколько представлений, и у меня все вышеуказанные функции работают.

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

Элемент категории принадлежит категории, поэтому категория может иметь одну или несколько категорий. элементы, поэтому между категорией и элементами существует отношение один ко многим.

Каждый txn может иметь один и только один элемент категории.

Категория состоит из небольшого числа полей .

Элемент категории состоит из небольшого числа полей.

Я изо всех сил пытаюсь найти лучший подход к этому.

Я рассмотрел каждое из подходы, описанные в https://docs.couchbase.com/server/5.0/data-modeling/modeling-relationships.html.

На данный момент я рассматриваю один из следующих подходов, и мне было интересно, если у кого-нибудь есть какие-либо советы - у меня есть примеры txns, cats и элементы cat в конце этого сообщения?

  1. Вставить элемент cat в txn и, надеюсь, выяснить, как выполнять поиск и сортировку по элементу cat item.name
  2. Отказаться от нумерации страниц 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 .

...