Как реализовать Метеор / Монго мультитенант с общими документами - PullRequest
0 голосов
/ 25 октября 2018

Я рассмотрел различные способы создания мультитенантов в MongoDB и решил использовать общие коллекции с идентификатором организации в документах для разделения арендаторов.Это работало хорошо, но я столкнулся с проблемой.У меня есть база данных продуктов, и каждый из этих продуктов имеет цену.Мы хотели бы, чтобы наши пользователи могли настраивать цены в случае, если наши значения по умолчанию неверны, но мы не ожидаем, что пользователи будут настраивать цену для каждого продукта.В идеале я бы хотел клонировать только те продукты, которые изменились у арендатора.Клонированный документ будет в основном таким же, как и оригинал, но с другой ценой и полем OrganizationId.

При получении продуктов для организации я хотел бы получить все настроенные продукты, а затем всепродукты по умолчанию для продуктов, которые они не настроили.Поэтому, если они настроили продукт A, но не продукт B, или CI ожидали получить:

    [{
        "name": "Product A",
        "productType": [
            "562e5aafae5d760823898202",
            "19221b0207d35f13312e6af8"
        ],
        "price": NumberInt(450),
        "description": "Product A",
        "manufacturer": "Manufacturer 1",
        "organizationId": ObjectId("19221b0207d35f13312e6af8")
    },

    {
        "name": "Product B",
        "productType": [
            "562e5aafae5d760823898202",
            "19221b0207d35f13312e6af8"
        ],
        "price": NumberInt(25),
        "description": "Product B",
        "manufacturer": "Manufacturer 2"
    },
    {
        "name": "Product C",
        "productType": [
            "562e5aafae5d760823898202",
            "19221b0207d35f13312e6af8"
        ],
        "price": NumberInt(554),
        "description": "Product C",
        "manufacturer": "Manufacturer 3"
    }]

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

...