EVE中的不同集合

时间:2016-10-13 17:50:28

标签: python rest eve

我有一个发送一些信息的蓝牙标签列表。我想为每个标签的MAC(地址)创建一个集合。我该怎么做?以下是我使用的设置和我接收的示例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 个答案:

答案 0 :(得分:0)

您不需要任何其他路线。 Eve支持批量插入。只需将此json发布到/ ble端点,但请确保密钥与架构密钥匹配。