python-3.x - 如何修复python中的“查询”对象没有属性“to_dict”错误?
问题描述
我创建了一个云函数来在特定条件下从 firestore 获取数据。我已成功从 firestore 获取数据,但从 firestore 收到的数据位于“查询对象”中。如何将此 Query 对象转换为字典类型?
我试过.to_dict()
函数来转换它,但是它给了我一个错误,
错误:函数崩溃。详细信息:“查询”对象没有属性“to_dict”
我也试过这个访问: How to convert firestore query response to json using python 但是,它没有用。
insights = db.collection('GA_data').where('artist_id','==',request_json['artist_id'])
insights = insights.to_dict()
print(insights)
这是我的request_json
,
{'artist_id': #some_number}
我的预期结果是,
{
"artist_id" : #some_number,
"avgTimeOnPage" : "0.0",
"bouncerate" : "0.0",
"date" : "#some_date",
"newUsers" : "0",
"pageviews" : "0",
"sessionDuration" : "0.0",
"slug" : "#some_slug",
"users" : "0"
}
但我真正的输出是:
Query object :
google.cloud.firestore_v1.query.Query object at 0x2a5f28059438
并且,在.to_dict()
函数之后:
错误:函数崩溃。详细信息:“查询”对象没有属性“to_dict”
解决方案
您必须附加stream()
到您的query
然后使用 for 循环从您的查询可能返回的每个文档中获取数据,在您的情况下,我猜您只期望一个,但您的查询可能有多个文档。那么你的代码可能是这样的:
insights = db.collection('GA_data').where('artist_id', '==', request_json['artist_id']
for document in insights.stream():
print(document.to_dict())
推荐阅读
- tensorflow - 全连接前后的多个Lstm
- exception - int() 不会在 try 块语句中将浮点数更改为整数
- java - 通过对象在静态方法上使用非静态变量?爪哇
- c++ - c ++中奇怪的for循环语法
- python - 行间隔的滚动差异
- java - dom4j - 我想在处理指令后消除空行
- javascript - 尝试在发票中添加 5% 的固定增值税(税)
- .htaccess - 如何为包含不在末尾但在斜杠之间的文件名的 url 页面进行内部重定向
- javascript - 添加表情符号后的Jquery焦点光标
- python - Google App Engine Flask 413 请求实体太大错误