从 MongoDB mongoengine 的返回中删除"_id"与python Flask的回报



我的python flask应用程序使用mongoengine,项目使用Custom ORM。

我在GET API中遇到一个问题,我正在获取存储在数据库中的资产数据列表,当我检索数据时,它会向我显示以下数据:代码,

{
"message": "done",
"result": {
"asset": [
{
"_id": {
"$oid": "5fa4fb9ea33244b15c6605bc"
},
"asset_download_link_android": "https://link",
"asset_download_link_ios": "https://link",
"asset_download_link_mac": "https://link",
"asset_download_link_windows": "https://link,
"asset_id": 1,
"asset_name": "car_exhibition_1",
"asset_size": "100MB",
"asset_thumbnail_url": "https://link",
"asset_version": "1.0.0",
"created_at": {
"$date": 1604647838316
},
"email": "xyz@gmail.com"
},
]
},
"status": 200
}

现在,

"_id": {
"$oid": "5fa4fb9ea33244b15c6605bc"
}

它是由我的ORM创建的$"符号我不能继续,因为我的对象可以给一个开头有特殊字符的变量赋值。因此,请任何人帮助我,如果没有响应中的$oid字段,我如何获得响应。

我用来获取响应的代码是,

assets =  collection_name.objects.all()
return_val = jsonify({"message" : "done" , "status" : status_code, "result" :                                                                
{"asset" : assets}})
return return_val, status_code

您可以迭代内部assets列表,并删除任何包含下面有$的密钥的密钥:

import json
import pprint
foo = json.loads("""
{
"message": "done",
"result": {
"asset": [
{
"_id": {
"$oid": "5fa4fb9ea33244b15c6605bc"
},
"asset_download_link_android": "https://link",
"asset_download_link_ios": "https://link",
"asset_download_link_mac": "https://link",
"asset_download_link_windows": "https://link",
"asset_id": 1,
"asset_name": "car_exhibition_1",
"asset_size": "100MB",
"asset_thumbnail_url": "https://link",
"asset_version": "1.0.0",
"created_at": {
"$date": 1604647838316
},
"email": "xyz@gmail.com"
}
]
},
"status": 200
}
""")
for asset in foo['result']['asset']:
del asset['_id']
del asset['created_at']

pprint.pprint(foo)

结果:

{'message': 'done',
'result': {'asset': [{'asset_download_link_android': 'https://link',
'asset_download_link_ios': 'https://link',
'asset_download_link_mac': 'https://link',
'asset_download_link_windows': 'https://link',
'asset_id': 1,
'asset_name': 'car_exhibition_1',
'asset_size': '100MB',
'asset_thumbnail_url': 'https://link',
'asset_version': '1.0.0',
'email': 'xyz@gmail.com'}]},
'status': 200}

最新更新