Настройка схемы модели Mongoose для различных лабораторных сред - PullRequest
0 голосов
/ 10 ноября 2018

Так что я просто любитель в мангусте и пробовал несколько вещей, но не могу найти хорошую структуру данных или отношение к моей проблеме.

Так, в проекте есть, например, модель клиента. Эта модель клиента имеет уникальный идентификатор для каждой лабораторной среды.

Так, например, идентификатор клиента: 123, содержит данные для среды lab5a и labe2e. Теперь это разные субдокументы с одинаковыми ключами для lab5a и labe2e. Я просто не могу понять, как это понять, чтобы можно было создавать функции, основанные на среде и обычай.

Я опубликую пример через минуту.

Так, например:

коллекция клиентов в mongodb имеет запись, которая выглядит следующим образом:

{
"_id" : "fc290ca0-b024-11e8-be48-813970d10d98",
"data" : {
    "lab5a" : {
        "cityId" : "schiphol1",
        "suspended" : false,
        "budgetDetails" : {
            "budgetLimit" : "0",
            "budgetResetDayOfMonth" : "1"
        },
        "cpes" : [ 
            {
                "cpeId" : "3C36E4-EOSSTB-TEST06"
            }, 
            {
                "cpeId" : "3C36E4-EOSSTB-003356372810"
            }, 
            {
                "cpeId" : "3C36E4-EOSSTB-003356372811"
            }
        ],
        "products" : [],
        "downstreamError" : false,
        "credentials" : [ 
            {
                "credentialId" : "test8"
            }, 
            {
                "credentialId" : "test9"
            }
        ]
    },
    "lab5a_mch" : {
        "cityId" : "schiphol1",
        "suspended" : false,
        "budgetDetails" : {
            "budgetLimit" : "0",
            "budgetResetDayOfMonth" : "1"
        },
        "cpes" : [ 
            {
                "cpeId" : "3C36E4-EOSSTB-TEST06"
            }, 
            {
                "cpeId" : "3C36E4-EOSSTB-003356372810"
            }
        ],
        "products" : [],
        "downstreamError" : true,
        "credentials" : [ 
            {
                "credentialId" : "fc290ca0-b024-11e8-be48-813970d10d98"
            }
        ]
    }
}

}

Тогда есть вторая коллекция под названием Cpe:

{
"_id" : "3c36e4-eosstb-test06",
"data" : {
    "lab5a" : {
        "smartcardId" : "999994999997",
        "disabled" : false,
        "customerId" : "fc290ca0-b024-11e8-be48-813970d10d98",
        "downstreamError" : false,
        "extSerialNumber" : "extSerialNumber123",
        "physicalDeviceType" : "STB - ARRIS - UHD",
        "componentType" : "VSC"
    },
    "lab5a_mch" : {
        "smartcardId" : "999994999997",
        "disabled" : false,
        "customerId" : "fc290ca0-b024-11e8-be48-813970d10d98",
        "downstreamError" : true,
        "physicalDeviceType" : "STB - ARRIS - UHD",
        "componentType" : "VSC"
    }
}

}

Теперь я хочу забрать «данные» и дать возможность заполнить детали для каждой среды и получать их по запросу.

Поэтому, когда будет выполнен вызов для обновления клиента для lab5a, я хочу иметь возможность получить этого клиента и обновить только данные для lab5a.

Но, как вы можете видеть, поля под каждой средой одинаковы, только другие значения.

Я просто не могу понять, как построить хорошую поддерживаемую схему для 4-5 таких сред, каждый раз под одним конкретным стандартом, то же самое для нескольких клиентов каждый раз.

То же самое для cpe и таблицы продуктов и т. Д.

Также то же самое о том, как создавать запросы, а затем обновлять или получать информацию о клиенте и его конкретной лабораторной среде и т. Д .?

Я действительно надеюсь, что кто-то может помочь мне с этим, потому что я просто не могу понять это или понять это. (

...