这是我的第一篇文章,尝试使用python来设置mongodb的api后端(通过mongoengine(。
我有这部分代码:
def post(self) -> Response:
data = request.get_json()
post_list = Lists(**data).save()
output = {'id': str(post_list.id)}
return jsonify({'result': output})
在其中,我从前端收到一个json,存储到数据库中,一切都很好。这是原始json:
{
"listTitle":"hjhk",
"listId":"873",
"listCreator":"lotte",
"sublist":[
{
"subListCreator":"lotte",
"item":[
{
"itemTitle":"njkn",
"itemContext":"None",
},
{
"itemTitle":"njk",
"itemContext":"None"
},
{
"itemTitle":"vbvb",
"itemContext":"None"
}
]
}
]
}
然而,我试图在结构中的最低数组中添加一个id字段,以指示项在子列表中的位置(1、2、3等(。为此,我正在寻找一个合适的For循环。尝试了很多东西,这是我迄今为止走得最远的一次:
def post(self) -> Response:
data = request.get_json()
for sublist in data['sublist']:
for item in sublist['item']:
if 'positionId' not in item:
item['positionId'] = 1
item['positionId'] += 1
post_list = Lists(**data).save()
output = {'id': str(post_list.id)}
return jsonify({'result': output})
结果:
{
"listTitle":"dasdsa",
"listId":"873",
"listCreator":"lotte",
"sublist":[
{
"subListCreator":"lotte",
"item":[
{
"itemTitle":"dasd",
"itemContext":"None",
"positionId":1
},
{
"itemTitle":"dsad",
"itemContext":"None",
"positionId":1
},
{
"itemTitle":"dsadsa",
"itemContext":"None",
"positionId":2
}
]
}
]
}
我知道我做错了,我也经常在谷歌上搜索。发现了很多相关的东西,但对我来说没有任何意义。希望有人能帮助我:(
此外,我还想添加一个与positionId系统类似的自动记分字段。只有在这里,第一个值是3,下一个值是2,后面的所有值都需要有1的分数。
好吧,我希望答案很简单,非常感谢已经在考虑这个问题了!!
python中的enumerate((函数应该对您有用:
def post(self) -> Response:
data = request.get_json()
for sublist in data['sublist']:
for i,item in enumerate(sublist['item']):
item['positionId'] = i
post_list = Lists(**data).save()
output = {'id': str(post_list.id)}
return jsonify({'result': output})