Python 解析器列表在本地做得很好,但在heroku服务器中失败

Python 解析器列表在本地做得很好,但在heroku服务器中失败,python,mongodb,flask,mongoengine,Python,Mongodb,Flask,Mongoengine,我在heroku有一个应用程序,包括订单、客户、商品和订单功能。我使用mlab数据库。当我运行i-local时,post-order函数做得很好,但当在heroku应用程序中部署失败时。我发现解析列表的返回结果在local和heroku中是不同的。但我不知道如何修复它。这是我的项目 客户类别: from mongoengine import * import mlab from model.customer import * class Customer(Document): use

我在heroku有一个应用程序,包括订单、客户、商品和订单功能。我使用mlab数据库。当我运行i-local时,post-order函数做得很好,但当在heroku应用程序中部署失败时。我发现解析列表的返回结果在local和heroku中是不同的。但我不知道如何修复它。这是我的项目

客户类别:

from mongoengine import *
import mlab
from model.customer import *


class Customer(Document):
    username = StringField()
    password = StringField()
from mongo
engine import *
import mlab 


class Good(Document):
    goodname = StringField()
    price = FloatField() 
from mongoengine import *
from model.good import Good
import mlab
from model.customer import *


class SingleOrder(EmbeddedDocument):
    good = ReferenceField("Good")
    count = IntField()

    def get_json(self):
        return {
            "good":Good.objects().with_id(self.good.id).get_json(),
            "count":self.count
        }

class Order(Document):
    items = ListField(EmbeddedDocumentField("SingleOrder"))
    customer = ReferenceField("Customer")
    totalspend = FloatField()
from flask_restful import Resource, reqparse
from model.good import *
from model.customer import Customer
import mlab
from model.order import Order, SingleOrder


class OrderRes(Resource):
    def get(self):
        orders = Order.objects()
        return mlab.list2json(orders)
    def post(self):
        parser = reqparse.RequestParser()  
        parser.add_argument(name="items", type=list, location="json")
        parser.add_argument(name="user_id", type=str, location="json")
        parser.add_argument(name="id", type=str, location="form")
        parser.add_argument(name="count", type=int, location="form")
        body = parser.parse_args()
        items = body["items"]
        user_id = body.user_id
        total_spend = 0
        order_item = []
        for item in items:
           good_id = item["id"]
           count = item["count"]
           good = Good.objects().with_id(good_id)
           price = good.price
           print("good_id:", good_id,";count: ",count,"price: ",price)
           total_spend += price*count
           singleOrder = SingleOrder(good = good, count = count)
           order_item.append(singleOrder)
        customer = Customer.objects().with_id(user_id)
        print(mlab.item2json(order_item[0]))
        print("order_item0:",mlab.item2json(order_item[0]),"order_item1:",order_item[1])
        order = Order(items = order_item,customer = customer,
                      totalspend = total_spend)
        order.save()
        add_order = Order.objects().with_id(order.id)
        return mlab.item2json(add_order)
import mongoengine

host = "dsxxxxxx.mlab.com"
port = xxxxx
db_name = "xxxxx"
username = "xxxxx"
password = "xxxxx"
def connect():
    mongoengine.connect(db_name, host=host, port=port, username=username,password=password)
def list2json(l):
    import json
    return [json.loads(item.to_json()) for item in l]
def item2json(item):
    import json
    return json.loads(item.to_json())
2017-06-11T05:16:56.724170+00:00 app[web.1]: [2017-06-11 05:16:56,722] ERROR in app: Exception on /api/order [POST]
2017-06-11T05:16:56.724203+00:00 app[web.1]: Traceback (most recent call last):
2017-06-11T05:16:56.724204+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
2017-06-11T05:16:56.724205+00:00 app[web.1]:     response = self.full_dispatch_request()
2017-06-11T05:16:56.724206+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1615, in full_dispatch_request
2017-06-11T05:16:56.724206+00:00 app[web.1]:     return self.finalize_request(rv)
2017-06-11T05:16:56.724207+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1630, in finalize_request
2017-06-11T05:16:56.724208+00:00 app[web.1]:     response = self.make_response(rv)
2017-06-11T05:16:56.724208+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1740, in make_response
2017-06-11T05:16:56.724209+00:00 app[web.1]:     rv = self.response_class.force_type(rv, request.environ)
2017-06-11T05:16:56.724210+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 885, in force_type
2017-06-11T05:16:56.724211+00:00 app[web.1]:     response = BaseResponse(*_run_wsgi_app(response, environ))
2017-06-11T05:16:56.724211+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 57, in _run_wsgi_app
2017-06-11T05:16:56.724212+00:00 app[web.1]:     return _run_wsgi_app(*args)
2017-06-11T05:16:56.724213+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/test.py", line 884, in run_wsgi_app
2017-06-11T05:16:56.724214+00:00 app[web.1]:     app_rv = app(environ, start_response)
2017-06-11T05:16:56.724219+00:00 app[web.1]: TypeError: 'TypeError' object is not callable
好课:

from mongoengine import *
import mlab
from model.customer import *


class Customer(Document):
    username = StringField()
    password = StringField()
from mongo
engine import *
import mlab 


class Good(Document):
    goodname = StringField()
    price = FloatField() 
from mongoengine import *
from model.good import Good
import mlab
from model.customer import *


class SingleOrder(EmbeddedDocument):
    good = ReferenceField("Good")
    count = IntField()

    def get_json(self):
        return {
            "good":Good.objects().with_id(self.good.id).get_json(),
            "count":self.count
        }

class Order(Document):
    items = ListField(EmbeddedDocumentField("SingleOrder"))
    customer = ReferenceField("Customer")
    totalspend = FloatField()
from flask_restful import Resource, reqparse
from model.good import *
from model.customer import Customer
import mlab
from model.order import Order, SingleOrder


class OrderRes(Resource):
    def get(self):
        orders = Order.objects()
        return mlab.list2json(orders)
    def post(self):
        parser = reqparse.RequestParser()  
        parser.add_argument(name="items", type=list, location="json")
        parser.add_argument(name="user_id", type=str, location="json")
        parser.add_argument(name="id", type=str, location="form")
        parser.add_argument(name="count", type=int, location="form")
        body = parser.parse_args()
        items = body["items"]
        user_id = body.user_id
        total_spend = 0
        order_item = []
        for item in items:
           good_id = item["id"]
           count = item["count"]
           good = Good.objects().with_id(good_id)
           price = good.price
           print("good_id:", good_id,";count: ",count,"price: ",price)
           total_spend += price*count
           singleOrder = SingleOrder(good = good, count = count)
           order_item.append(singleOrder)
        customer = Customer.objects().with_id(user_id)
        print(mlab.item2json(order_item[0]))
        print("order_item0:",mlab.item2json(order_item[0]),"order_item1:",order_item[1])
        order = Order(items = order_item,customer = customer,
                      totalspend = total_spend)
        order.save()
        add_order = Order.objects().with_id(order.id)
        return mlab.item2json(add_order)
import mongoengine

host = "dsxxxxxx.mlab.com"
port = xxxxx
db_name = "xxxxx"
username = "xxxxx"
password = "xxxxx"
def connect():
    mongoengine.connect(db_name, host=host, port=port, username=username,password=password)
def list2json(l):
    import json
    return [json.loads(item.to_json()) for item in l]
def item2json(item):
    import json
    return json.loads(item.to_json())
2017-06-11T05:16:56.724170+00:00 app[web.1]: [2017-06-11 05:16:56,722] ERROR in app: Exception on /api/order [POST]
2017-06-11T05:16:56.724203+00:00 app[web.1]: Traceback (most recent call last):
2017-06-11T05:16:56.724204+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
2017-06-11T05:16:56.724205+00:00 app[web.1]:     response = self.full_dispatch_request()
2017-06-11T05:16:56.724206+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1615, in full_dispatch_request
2017-06-11T05:16:56.724206+00:00 app[web.1]:     return self.finalize_request(rv)
2017-06-11T05:16:56.724207+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1630, in finalize_request
2017-06-11T05:16:56.724208+00:00 app[web.1]:     response = self.make_response(rv)
2017-06-11T05:16:56.724208+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1740, in make_response
2017-06-11T05:16:56.724209+00:00 app[web.1]:     rv = self.response_class.force_type(rv, request.environ)
2017-06-11T05:16:56.724210+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 885, in force_type
2017-06-11T05:16:56.724211+00:00 app[web.1]:     response = BaseResponse(*_run_wsgi_app(response, environ))
2017-06-11T05:16:56.724211+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 57, in _run_wsgi_app
2017-06-11T05:16:56.724212+00:00 app[web.1]:     return _run_wsgi_app(*args)
2017-06-11T05:16:56.724213+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/test.py", line 884, in run_wsgi_app
2017-06-11T05:16:56.724214+00:00 app[web.1]:     app_rv = app(environ, start_response)
2017-06-11T05:16:56.724219+00:00 app[web.1]: TypeError: 'TypeError' object is not callable
订单类别:

from mongoengine import *
import mlab
from model.customer import *


class Customer(Document):
    username = StringField()
    password = StringField()
from mongo
engine import *
import mlab 


class Good(Document):
    goodname = StringField()
    price = FloatField() 
from mongoengine import *
from model.good import Good
import mlab
from model.customer import *


class SingleOrder(EmbeddedDocument):
    good = ReferenceField("Good")
    count = IntField()

    def get_json(self):
        return {
            "good":Good.objects().with_id(self.good.id).get_json(),
            "count":self.count
        }

class Order(Document):
    items = ListField(EmbeddedDocumentField("SingleOrder"))
    customer = ReferenceField("Customer")
    totalspend = FloatField()
from flask_restful import Resource, reqparse
from model.good import *
from model.customer import Customer
import mlab
from model.order import Order, SingleOrder


class OrderRes(Resource):
    def get(self):
        orders = Order.objects()
        return mlab.list2json(orders)
    def post(self):
        parser = reqparse.RequestParser()  
        parser.add_argument(name="items", type=list, location="json")
        parser.add_argument(name="user_id", type=str, location="json")
        parser.add_argument(name="id", type=str, location="form")
        parser.add_argument(name="count", type=int, location="form")
        body = parser.parse_args()
        items = body["items"]
        user_id = body.user_id
        total_spend = 0
        order_item = []
        for item in items:
           good_id = item["id"]
           count = item["count"]
           good = Good.objects().with_id(good_id)
           price = good.price
           print("good_id:", good_id,";count: ",count,"price: ",price)
           total_spend += price*count
           singleOrder = SingleOrder(good = good, count = count)
           order_item.append(singleOrder)
        customer = Customer.objects().with_id(user_id)
        print(mlab.item2json(order_item[0]))
        print("order_item0:",mlab.item2json(order_item[0]),"order_item1:",order_item[1])
        order = Order(items = order_item,customer = customer,
                      totalspend = total_spend)
        order.save()
        add_order = Order.objects().with_id(order.id)
        return mlab.item2json(add_order)
import mongoengine

host = "dsxxxxxx.mlab.com"
port = xxxxx
db_name = "xxxxx"
username = "xxxxx"
password = "xxxxx"
def connect():
    mongoengine.connect(db_name, host=host, port=port, username=username,password=password)
def list2json(l):
    import json
    return [json.loads(item.to_json()) for item in l]
def item2json(item):
    import json
    return json.loads(item.to_json())
2017-06-11T05:16:56.724170+00:00 app[web.1]: [2017-06-11 05:16:56,722] ERROR in app: Exception on /api/order [POST]
2017-06-11T05:16:56.724203+00:00 app[web.1]: Traceback (most recent call last):
2017-06-11T05:16:56.724204+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
2017-06-11T05:16:56.724205+00:00 app[web.1]:     response = self.full_dispatch_request()
2017-06-11T05:16:56.724206+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1615, in full_dispatch_request
2017-06-11T05:16:56.724206+00:00 app[web.1]:     return self.finalize_request(rv)
2017-06-11T05:16:56.724207+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1630, in finalize_request
2017-06-11T05:16:56.724208+00:00 app[web.1]:     response = self.make_response(rv)
2017-06-11T05:16:56.724208+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1740, in make_response
2017-06-11T05:16:56.724209+00:00 app[web.1]:     rv = self.response_class.force_type(rv, request.environ)
2017-06-11T05:16:56.724210+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 885, in force_type
2017-06-11T05:16:56.724211+00:00 app[web.1]:     response = BaseResponse(*_run_wsgi_app(response, environ))
2017-06-11T05:16:56.724211+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 57, in _run_wsgi_app
2017-06-11T05:16:56.724212+00:00 app[web.1]:     return _run_wsgi_app(*args)
2017-06-11T05:16:56.724213+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/test.py", line 884, in run_wsgi_app
2017-06-11T05:16:56.724214+00:00 app[web.1]:     app_rv = app(environ, start_response)
2017-06-11T05:16:56.724219+00:00 app[web.1]: TypeError: 'TypeError' object is not callable
订单响应:

from mongoengine import *
import mlab
from model.customer import *


class Customer(Document):
    username = StringField()
    password = StringField()
from mongo
engine import *
import mlab 


class Good(Document):
    goodname = StringField()
    price = FloatField() 
from mongoengine import *
from model.good import Good
import mlab
from model.customer import *


class SingleOrder(EmbeddedDocument):
    good = ReferenceField("Good")
    count = IntField()

    def get_json(self):
        return {
            "good":Good.objects().with_id(self.good.id).get_json(),
            "count":self.count
        }

class Order(Document):
    items = ListField(EmbeddedDocumentField("SingleOrder"))
    customer = ReferenceField("Customer")
    totalspend = FloatField()
from flask_restful import Resource, reqparse
from model.good import *
from model.customer import Customer
import mlab
from model.order import Order, SingleOrder


class OrderRes(Resource):
    def get(self):
        orders = Order.objects()
        return mlab.list2json(orders)
    def post(self):
        parser = reqparse.RequestParser()  
        parser.add_argument(name="items", type=list, location="json")
        parser.add_argument(name="user_id", type=str, location="json")
        parser.add_argument(name="id", type=str, location="form")
        parser.add_argument(name="count", type=int, location="form")
        body = parser.parse_args()
        items = body["items"]
        user_id = body.user_id
        total_spend = 0
        order_item = []
        for item in items:
           good_id = item["id"]
           count = item["count"]
           good = Good.objects().with_id(good_id)
           price = good.price
           print("good_id:", good_id,";count: ",count,"price: ",price)
           total_spend += price*count
           singleOrder = SingleOrder(good = good, count = count)
           order_item.append(singleOrder)
        customer = Customer.objects().with_id(user_id)
        print(mlab.item2json(order_item[0]))
        print("order_item0:",mlab.item2json(order_item[0]),"order_item1:",order_item[1])
        order = Order(items = order_item,customer = customer,
                      totalspend = total_spend)
        order.save()
        add_order = Order.objects().with_id(order.id)
        return mlab.item2json(add_order)
import mongoengine

host = "dsxxxxxx.mlab.com"
port = xxxxx
db_name = "xxxxx"
username = "xxxxx"
password = "xxxxx"
def connect():
    mongoengine.connect(db_name, host=host, port=port, username=username,password=password)
def list2json(l):
    import json
    return [json.loads(item.to_json()) for item in l]
def item2json(item):
    import json
    return json.loads(item.to_json())
2017-06-11T05:16:56.724170+00:00 app[web.1]: [2017-06-11 05:16:56,722] ERROR in app: Exception on /api/order [POST]
2017-06-11T05:16:56.724203+00:00 app[web.1]: Traceback (most recent call last):
2017-06-11T05:16:56.724204+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
2017-06-11T05:16:56.724205+00:00 app[web.1]:     response = self.full_dispatch_request()
2017-06-11T05:16:56.724206+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1615, in full_dispatch_request
2017-06-11T05:16:56.724206+00:00 app[web.1]:     return self.finalize_request(rv)
2017-06-11T05:16:56.724207+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1630, in finalize_request
2017-06-11T05:16:56.724208+00:00 app[web.1]:     response = self.make_response(rv)
2017-06-11T05:16:56.724208+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1740, in make_response
2017-06-11T05:16:56.724209+00:00 app[web.1]:     rv = self.response_class.force_type(rv, request.environ)
2017-06-11T05:16:56.724210+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 885, in force_type
2017-06-11T05:16:56.724211+00:00 app[web.1]:     response = BaseResponse(*_run_wsgi_app(response, environ))
2017-06-11T05:16:56.724211+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 57, in _run_wsgi_app
2017-06-11T05:16:56.724212+00:00 app[web.1]:     return _run_wsgi_app(*args)
2017-06-11T05:16:56.724213+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/test.py", line 884, in run_wsgi_app
2017-06-11T05:16:56.724214+00:00 app[web.1]:     app_rv = app(environ, start_response)
2017-06-11T05:16:56.724219+00:00 app[web.1]: TypeError: 'TypeError' object is not callable
mlab文件:

from mongoengine import *
import mlab
from model.customer import *


class Customer(Document):
    username = StringField()
    password = StringField()
from mongo
engine import *
import mlab 


class Good(Document):
    goodname = StringField()
    price = FloatField() 
from mongoengine import *
from model.good import Good
import mlab
from model.customer import *


class SingleOrder(EmbeddedDocument):
    good = ReferenceField("Good")
    count = IntField()

    def get_json(self):
        return {
            "good":Good.objects().with_id(self.good.id).get_json(),
            "count":self.count
        }

class Order(Document):
    items = ListField(EmbeddedDocumentField("SingleOrder"))
    customer = ReferenceField("Customer")
    totalspend = FloatField()
from flask_restful import Resource, reqparse
from model.good import *
from model.customer import Customer
import mlab
from model.order import Order, SingleOrder


class OrderRes(Resource):
    def get(self):
        orders = Order.objects()
        return mlab.list2json(orders)
    def post(self):
        parser = reqparse.RequestParser()  
        parser.add_argument(name="items", type=list, location="json")
        parser.add_argument(name="user_id", type=str, location="json")
        parser.add_argument(name="id", type=str, location="form")
        parser.add_argument(name="count", type=int, location="form")
        body = parser.parse_args()
        items = body["items"]
        user_id = body.user_id
        total_spend = 0
        order_item = []
        for item in items:
           good_id = item["id"]
           count = item["count"]
           good = Good.objects().with_id(good_id)
           price = good.price
           print("good_id:", good_id,";count: ",count,"price: ",price)
           total_spend += price*count
           singleOrder = SingleOrder(good = good, count = count)
           order_item.append(singleOrder)
        customer = Customer.objects().with_id(user_id)
        print(mlab.item2json(order_item[0]))
        print("order_item0:",mlab.item2json(order_item[0]),"order_item1:",order_item[1])
        order = Order(items = order_item,customer = customer,
                      totalspend = total_spend)
        order.save()
        add_order = Order.objects().with_id(order.id)
        return mlab.item2json(add_order)
import mongoengine

host = "dsxxxxxx.mlab.com"
port = xxxxx
db_name = "xxxxx"
username = "xxxxx"
password = "xxxxx"
def connect():
    mongoengine.connect(db_name, host=host, port=port, username=username,password=password)
def list2json(l):
    import json
    return [json.loads(item.to_json()) for item in l]
def item2json(item):
    import json
    return json.loads(item.to_json())
2017-06-11T05:16:56.724170+00:00 app[web.1]: [2017-06-11 05:16:56,722] ERROR in app: Exception on /api/order [POST]
2017-06-11T05:16:56.724203+00:00 app[web.1]: Traceback (most recent call last):
2017-06-11T05:16:56.724204+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
2017-06-11T05:16:56.724205+00:00 app[web.1]:     response = self.full_dispatch_request()
2017-06-11T05:16:56.724206+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1615, in full_dispatch_request
2017-06-11T05:16:56.724206+00:00 app[web.1]:     return self.finalize_request(rv)
2017-06-11T05:16:56.724207+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1630, in finalize_request
2017-06-11T05:16:56.724208+00:00 app[web.1]:     response = self.make_response(rv)
2017-06-11T05:16:56.724208+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1740, in make_response
2017-06-11T05:16:56.724209+00:00 app[web.1]:     rv = self.response_class.force_type(rv, request.environ)
2017-06-11T05:16:56.724210+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 885, in force_type
2017-06-11T05:16:56.724211+00:00 app[web.1]:     response = BaseResponse(*_run_wsgi_app(response, environ))
2017-06-11T05:16:56.724211+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 57, in _run_wsgi_app
2017-06-11T05:16:56.724212+00:00 app[web.1]:     return _run_wsgi_app(*args)
2017-06-11T05:16:56.724213+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/test.py", line 884, in run_wsgi_app
2017-06-11T05:16:56.724214+00:00 app[web.1]:     app_rv = app(environ, start_response)
2017-06-11T05:16:56.724219+00:00 app[web.1]: TypeError: 'TypeError' object is not callable

在我将其部署到heroku应用程序并发布新订单后,出现了500个内部服务器错误。但在当地,这没关系

我发布新订单:

{
    "items":[
        {
            "id":"593c103b4dabd9000b85b0e5",
            "count":2
        },
        {
            "id":"593c10684dabd9000b85b0e6",
            "count":3
        }
        ],
    "user_id":"593c0d5373c2132880b8a5f3"
}
Heroku应用程序日志:

from mongoengine import *
import mlab
from model.customer import *


class Customer(Document):
    username = StringField()
    password = StringField()
from mongo
engine import *
import mlab 


class Good(Document):
    goodname = StringField()
    price = FloatField() 
from mongoengine import *
from model.good import Good
import mlab
from model.customer import *


class SingleOrder(EmbeddedDocument):
    good = ReferenceField("Good")
    count = IntField()

    def get_json(self):
        return {
            "good":Good.objects().with_id(self.good.id).get_json(),
            "count":self.count
        }

class Order(Document):
    items = ListField(EmbeddedDocumentField("SingleOrder"))
    customer = ReferenceField("Customer")
    totalspend = FloatField()
from flask_restful import Resource, reqparse
from model.good import *
from model.customer import Customer
import mlab
from model.order import Order, SingleOrder


class OrderRes(Resource):
    def get(self):
        orders = Order.objects()
        return mlab.list2json(orders)
    def post(self):
        parser = reqparse.RequestParser()  
        parser.add_argument(name="items", type=list, location="json")
        parser.add_argument(name="user_id", type=str, location="json")
        parser.add_argument(name="id", type=str, location="form")
        parser.add_argument(name="count", type=int, location="form")
        body = parser.parse_args()
        items = body["items"]
        user_id = body.user_id
        total_spend = 0
        order_item = []
        for item in items:
           good_id = item["id"]
           count = item["count"]
           good = Good.objects().with_id(good_id)
           price = good.price
           print("good_id:", good_id,";count: ",count,"price: ",price)
           total_spend += price*count
           singleOrder = SingleOrder(good = good, count = count)
           order_item.append(singleOrder)
        customer = Customer.objects().with_id(user_id)
        print(mlab.item2json(order_item[0]))
        print("order_item0:",mlab.item2json(order_item[0]),"order_item1:",order_item[1])
        order = Order(items = order_item,customer = customer,
                      totalspend = total_spend)
        order.save()
        add_order = Order.objects().with_id(order.id)
        return mlab.item2json(add_order)
import mongoengine

host = "dsxxxxxx.mlab.com"
port = xxxxx
db_name = "xxxxx"
username = "xxxxx"
password = "xxxxx"
def connect():
    mongoengine.connect(db_name, host=host, port=port, username=username,password=password)
def list2json(l):
    import json
    return [json.loads(item.to_json()) for item in l]
def item2json(item):
    import json
    return json.loads(item.to_json())
2017-06-11T05:16:56.724170+00:00 app[web.1]: [2017-06-11 05:16:56,722] ERROR in app: Exception on /api/order [POST]
2017-06-11T05:16:56.724203+00:00 app[web.1]: Traceback (most recent call last):
2017-06-11T05:16:56.724204+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app
2017-06-11T05:16:56.724205+00:00 app[web.1]:     response = self.full_dispatch_request()
2017-06-11T05:16:56.724206+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1615, in full_dispatch_request
2017-06-11T05:16:56.724206+00:00 app[web.1]:     return self.finalize_request(rv)
2017-06-11T05:16:56.724207+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1630, in finalize_request
2017-06-11T05:16:56.724208+00:00 app[web.1]:     response = self.make_response(rv)
2017-06-11T05:16:56.724208+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1740, in make_response
2017-06-11T05:16:56.724209+00:00 app[web.1]:     rv = self.response_class.force_type(rv, request.environ)
2017-06-11T05:16:56.724210+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 885, in force_type
2017-06-11T05:16:56.724211+00:00 app[web.1]:     response = BaseResponse(*_run_wsgi_app(response, environ))
2017-06-11T05:16:56.724211+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/wrappers.py", line 57, in _run_wsgi_app
2017-06-11T05:16:56.724212+00:00 app[web.1]:     return _run_wsgi_app(*args)
2017-06-11T05:16:56.724213+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.6/site-packages/werkzeug/test.py", line 884, in run_wsgi_app
2017-06-11T05:16:56.724214+00:00 app[web.1]:     app_rv = app(environ, start_response)
2017-06-11T05:16:56.724219+00:00 app[web.1]: TypeError: 'TypeError' object is not callable
我通过返回项进行调试,发现解析器中的localitems参数是json类型,如下所示:

        {
            "id":"593c103b4dabd9000b85b0e5",
            "count":2
        },
        {
            "id":"593c10684dabd9000b85b0e6",
            "count":3
        }
但在服务器中,它只返回列表
[“id”,“count”]
。我怎样才能修好它


My git repo:

当你说它“本地”运行良好时,部署有什么变化?你有没有试过改变你生活中的事情“本地”优先?我会首先让你的本地应用程序连接到mlab帐户,如果你还没有这样做。这至少可以确定数据库连接是否是错误源。一般来说,您应该有一些日志记录,可以准确地告诉您服务器上的错误是什么。是的,首先我将我的应用程序连接到mlab数据库,在heroku中部署之前,我不会更改任何内容。我完好无损。这是登录服务器:请使用您问题上的链接发布任何其他信息。日志是受欢迎的。当你说它“本地”运行良好时,部署有什么变化?你有没有试过改变你生活中的事情“本地”优先?我会首先让你的本地应用程序连接到mlab帐户,如果你还没有这样做。这至少可以确定数据库连接是否是错误源。一般来说,您应该有一些日志记录,可以准确地告诉您服务器上的错误是什么。是的,首先我将我的应用程序连接到mlab数据库,在heroku中部署之前,我不会更改任何内容。我完好无损。这是登录服务器:请使用您问题上的链接发布任何其他信息。欢迎使用日志。