Питон-Ева. Объявить массив идентификаторов объектов в схеме Cerberus

Я разрабатываю API с Python-Eve, и мне нужно создать объявление схемы MongoDB с помощью Cerberus, чтобы выразить документ, подобный приведенному ниже:

{
    name : 'John Smith',
    type: 'home',
    devices : [
        ObjectID('1234'),
        ObjectID('ABCD'),
        ObjectID('D2AF'),
    ],
}

Я хотел бы знать, как я могу объявить схему Cerberus, чтобы иметь массив ObjectID, как ключ devices выше.

Я хотел бы иметь схему для массива ссылок на другие документы и, возможно, сделать их встраиваемыми, как приведенный ниже пример схемы с одним элементом, взятый из Python-Eve документация:

{
     'author': {
         'type': 'objectid',
         'data_relation': {
             'resource': 'users',
             'field': '_id',
             'embeddable': True
         },
     },        
 }

Я подозреваю, что для этого потребуется пользовательский тип, но я до сих пор не понял, как это сделать.


person gcw    schedule 21.12.2015    source источник


Ответы (1)


Хорошо, нашел, как выразить устройства:

{   
    'devices': {
        'type': 'list',
        'schema': {
            'type': 'objectid',
            'data_relation': {
                'resource': 'devices',
                'field': '_id',
                'embeddable': True
            },
        }
    }
}

Он есть в превосходной документации по Cerberus.

person gcw    schedule 22.12.2015