python-3.x - AttributeError:“CollectionReference”对象没有属性“set”
问题描述
我正在尝试从我的 Firestore 数据库中检索数据,然后进行一些更改,然后再次在数据库中设置这些数据。
import firebase_admin
from PreProcessing import Pre_Processing
import pandas as pd
from FeatureExtraction import FeatureExtraction
from Processing import Processing
from firebase_admin import firestore , credentials
def Classification(Data , ID ):
Answers = []
Message = Data['message']
Answers.append(Data['message'])
PreProcessing = Pre_Processing(Answers)
Answers = PreProcessing.MainFunction()
del Answers[0]
Features = FeatureExtraction(Answers)
Answers = Features.Test_TFIDF()
print(Answers.shape)
print("Finished TF-IDF Training")
Data1 = pd.DataFrame(Answers)
del Answers
Data1 = Data1.fillna(0)
SentimentList = Features.Sentiment()
Data1[315477] = SentimentList
Processing_Object = Processing(Data1)
Results = Processing_Object.Testing()
Classified = db.collection("Chat").document(Data['ChatID']).collection("chatting").set({
"message" : Data['message'],
"from" : Data['from'],
"Classification" : Results,
"time" : Data['time'],
})
print(Results)
cred = credentials.Certificate("ssmproject-61dec-firebase-adminsdk-op5bp-d525c0a76e.json")
firebase_admin.initialize_app(cred)
db = firestore.client()
NeedClassification = db.collection("NeedClassification")
docs = NeedClassification.get()
for doc in docs:
if doc != None:
data = doc.to_dict()
Classification(data , doc.id)
那是输出
Test.py:39: DeprecationWarning: 'Collection.get' is deprecated: please use 'Collection.stream' instead.
docs = NeedClassification.get()
(1, 315477)
Finished TF-IDF Training
Traceback (most recent call last):
File "Test.py", line 43, in <module>
Classification(data , doc.id , db)
File "Test.py", line 25, in Classification
Classified = db.collection("Chat").document(Data['ChatID']).collection("chatting").set({
AttributeError: 'CollectionReference' object has no attribute 'set'
我只是在将数据设置回数据库时遇到问题提前致谢
解决方案
CollectionReference 有 add()。
DocumentReference 有 set()、update() 和 delete()。
看:
- https://googleapis.github.io/google-cloud-python/latest/firestore/collection.html
- https://googleapis.github.io/google-cloud-python/latest/firestore/document.html
- https://googleapis.github.io/google-cloud-python/latest/firestore/index.html
如果你想创建新文档,那么代码是这样的。(文档ID是自动设置的)
Classified = db.collection("Chat").document(Data['ChatID']).collection("chatting").add({
"message" : Data['message'],
"from" : Data['from'],
"Classification" : Results,
"time" : Data['time'],
})
或者
Classified = db.collection("Chat").document(Data['ChatID']).collection("chatting").document().set({
"message" : Data['message'],
"from" : Data['from'],
"Classification" : Results,
"time" : Data['time'],
})
推荐阅读
- asp.net - 反应 useState 崩溃
- jquery - 通过 for 属性根据标签选择字段
- javascript - 在JS中的另一个数组中过滤对象数组
- javascript - maps 函数在控制台上提供 6 个数组并且不会输出单独的数组
- facebook - 使用 javascript 在 facebook 中为测试用户添加和获取运动和兴趣
- java - Jenkins 升级到 2.150 版本后无法加载
- angular - Angular 6,@ViewChild,*ngIf,在输入元素隐藏之前获取输入元素值
- javascript - 我如何检查 DOM 中加载的 npm 包组件的反应
- php - 接收 2 个可能参数的函数
- mongodb - 当 mongodb 集合为空时,响应式可尾游标关闭