AttributeError: объект 'CollectionReference' не имеет атрибута 'set' - PullRequest
2 голосов
/ 02 мая 2019

Я пытаюсь получить данные из базы данных 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'

У меня просто проблема с возвращением данных в базу данных. Спасибо заранее

1 Ответ

2 голосов
/ 02 мая 2019

CollectionReference имеет add ().

DocumentReference имеет set (), update () и delete ().

См .:

Если вы хотите создать новый документ, то код выглядит следующим образом (идентификатор документа устанавливается автоматически)

    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'],
    })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...