서류:
{ "_id" : ObjectId("5532211a6d88889eb26f6556"), "id" : 0, "name" : "Latte", "quantity" : "1", "milk" : "Skim", "size" : "grande" }
{ "_id" : ObjectId("553221c56d88889eb26f6557"), "id" : 1, "name" : "Americano", "quantity" : 3, "milk" : "No", "size" : "short" }
{ "_id" : ObjectId("553221e36d88889eb26f6558"), "id" : 2, "name" : "Americano", "quantity" : 1, "milk" : null, "size" : "short" }
암호:
from flask import Flask, jsonify, make_response, request
import pymongo
from bson.json_util import dumps
connection = pymongo.MongoClient("localhost", 27017)
db = connection.RESTbucks
collection = db.order
app = Flask(__name__)
@app.route('/order/<int:order_ID>', methods=['GET'])
def get_order(order_ID):
orders = collection.find()
json_orders = dumps(orders)
target_order_ID = [target_order_ID for target_order_ID in json_orders if target_order_ID["id"] == order_ID]
if target_order_ID == order_ID:
return jsonify({'order': json_orders[order_ID]})
else:
return make_response(jsonify({'error': 'Not found'}), 404)
" http : // localhost : 5000 / order / 1 "에 액세스하면 결과가 예상됩니다.
"{ "_id" : ObjectId("553221c56d88889eb26f6557"), "id" : 1, "name" : "Americano", "quantity" : 3, "milk" : "No", "size" : "short" }"
하지만 TypeError: string indices must be integers, not str
예상되는 결과를 얻으 려면 어떻게해야합니까?
다음 두 줄을 수정해야합니다.
json_orders = dumps(orders)
target_order_ID = [target_order_ID for target_order_ID in json_orders if target_order_ID["id"] == order_ID]
먼저 dumps
문자열을 만들고 문자열도 마찬가지 json_orders
입니다. 목록 이해력에서 반복하면 문자열 자체가 한 문자 문자열 인 문자열의 문자를 반복하는 것입니다. 그런 다음 ["id"]
오류의 원인이되는 이러한 문자열을 인덱싱하려고합니다 .
두 번째 줄에는 또 다른 오류가 있습니다. target_ID
목록에 할당하는 중입니다 . 목록이 나타나면 목록에서 하나의 요소 만 필요합니다. IMHO가 이름을 남용 target_order_ID
했으므로 약간의 정리가 도움이 될 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다