如何使用python flask和mongoalchemy显示对象数组

2024-09-30 04:26:59 发布

您现在位置:Python中文网/ 问答频道 /正文

如何为mongoalchemy编写一个将返回json对象数组的端点

我正在尝试如下所示:

@authenticate_bp.route('/users',methods=['GET'])
def user_list():
    users = [x.serialize for x in TokenBasedAuth.query.all()]
    return jsonify({'usersList': users})

如下图所示

^{pr2}$

数据库i中的数据如下所示

{ 
    "_id" : ObjectId("586a0f01558b6728388161be"), 
    "username" : "sam", 
    "firstName" : "sam", 
    "lastName" : "123", 
    "password" : "123", 
    "email" : "email@123"
}

我得到的错误如下所示

AttributeError:“TokenBasedAuth”对象没有属性“serialize”//Werkzeug Debugger

按预期工作的备用路线如下所示

@authenticate_bp.route('/users/list')
def users_listItr():
    try:
        users =  TokenBasedAuth.query.all()
        formatted_users=[]
        for user in users:
            print user
            formatted_users.append({
                'username':user.username,
                'password':user.password,
                'email':user.email,
                'firstName':user.firstName,
                'lastName':user.lastName

            })
        return json.dumps({'users':formatted_users}),
        200,{'Content-Type':'application/json'}

    except Exception,e:
        return jsonify(status='ERROR',message=str(e))

但这不是一个好主意,因为我正在尝试为一个架构构建api,它可能包含几千个具有更复杂结构的文档请建议一种方法

请帮助获取对象数组


Tags: 对象jsonreturnemailusernamepassword数组firstname
1条回答
网友
1楼 · 发布于 2024-09-30 04:26:59

在我看来,最简单的方法是在结果集上使用一个带有函数的生成器,将结果对象序列化为有效的JSON:

def serialize(row):
    return {
        "_id" : str(row._id),
        "username" : row.username,
        "firstName" : row.firstName,
        "lastName" : row.lastName,
        "password" : row.password,
        "email" : row.email
    } 

@authenticate_bp.route('/users',methods=['GET'])
def user_list():
    users = [serialize(x) for x in TokenBasedAuth.query.all()]
    return jsonify({'usersList': users})

有几种方法可以尝试创建自定义JSON编码器:See this post。一般来说,我发现,对于Flask来说,如果我需要确定一些东西,我需要坚持使用列表和dicts,因为这要简单得多。在

相关问题 更多 >

    热门问题