Другая коллекция в EVE

#python #rest #eve

#python #отдых #eve

Вопрос:

У меня есть список тегов Bluetooth, которые отправляют некоторую информацию. Я хочу создать коллекцию для каждого MAC (addr) тегов. Как я могу это сделать? Вот настройки, которые я использую, и пример JSON, который я получаю.

 DOMAIN = {
'ble': [
    'additional_lookup': {
        'url': 'regex("[w] ")',
        'field': 'name',
        },
    'schema': {
        'address': {
            'type': 'string'
        },
        'rssi': {
            'type': 'string'
        },
        'name': {
            'type': 'string',
            'unique': True
        },
        'tx_power': {
            'type': 'string'
        },
        'r_time': {
            'type': 'string'
        }
    }
 ]
}
 

Это пример JSON, который я получу:

 [{
    "addr": "ff:ff:00:00:2a:15",
    "datetime": "2016-10-06T05:19:38. 0000",
    "name": "ITAG",
    "rssi": -61,
    "txpw": 0
}, {
    "addr": "66:55:44:33:22:10",
    "datetime": "2016-10-06T05:19:38. 0000",
    "name": "NULL",
    "rssi": -61,
    "txpw": -100
},

{
    "addr": "47:c9:df:25:34:b1",
    "datetime": "2016-10-06T05:19:38. 0000",
    "name": "NULL",
    "rssi": -94,
    "txpw": -100
}
]
 

Я пытался маршрутизировать с помощью Flask, но он не создает новые коллекции. Здесь код:

 from eve import Eve
import Flask

app = Eve()

@app.route('/ble', methods=['POST'])
def create_ble():
    data = request.get_json()
    json_data = json.loads(data)
    quant = len(json_data['beacon_list'])
    for i in range(0, quant-1):
        beacon = json_data[i]
        addr = json_data[i]['addr']
        beacon = json.dumps(beacon)
        mongo.db[addr].insert(beacon)

    return 


if __name__ == '__main__':
    app.run()
 

Комментарии:

1. Итак, что вы пытались делать?

Ответ №1:

Для этого вам не нужен какой-либо дополнительный маршрут. Eve поддерживает массовые вставки. Просто ОТПРАВЬТЕ этот json в конечную точку / ble, но убедитесь, что ключи соответствуют вашим ключам схемы.