#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, но убедитесь, что ключи соответствуют вашим ключам схемы.