2
votes

J'essaie d'obtenir uniquement la valeur d'un champ dans Firestore en utilisant python mais cela renvoie une paire clé / valeur à la place

Je lie mon application avec cloude firestore et j'utilise python pour cela et je dois récupérer le champ de valeur "Balance" pour vérifier s'il est valide. mais quand j'essaye de le récupérer, j'obtiens des sorties comme celle-ci

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

# Use the application default credentials
cred = credentials.Certificate("/Users/admin/Downloads/serviceAccountKey.json")
firebase_admin.initialize_app(cred)

db = firestore.client()
user_id= 'my user id in database'
u = 80
userbal_new= u-10
users_ref = db.collection(u'users').document(user_id)

#update balance
#users_ref.update({u'Balance': userbal_new})

#get balance
get_bal= users_ref.get({u'Balance'})
bal = u'{}'.format(get_bal.to_dict())
print (bal)

Mais je n'ai besoin que de la valeur entière / flottante de la balance. Mon code est le suivant -

{ Balance: 80 }


0 commentaires

3 Réponses :


4
votes

Parce que vous utilisez la fonction to_dict ici:

bal = u'{}'.format(get_bal.to_dict()['Balance'])

Ceci génère un dictionnaire, vous pouvez appeler le bal dict après comme ça:

bal['Balance']

Alternativement, faites l'appel au format (si c'est toujours le solde que vous voulez):

bal = u'{}'.format(get_bal.to_dict())


0 commentaires

-1
votes

si vous obtenez bal = {'Balance': 80} puis pour obtenir l'utilisation du solde .. print (bal ['Balance'])


0 commentaires

3
votes

Vous pouvez spécifier les field_paths que vous souhaitez renvoyer dans l'instantané avec db.collection (). document (). get () en passant field_paths = {} XXX

Ceci retournera juste le solde dans un dictionnaire:

80

Je trouve le get () plus facile à lire. Donc, si vous ne voulez que le fichier int.

bal = users_ref.get(field_paths={'Balance'}).to_dict().get('Balance')

ou

bal = get_bal.get('Balance')

retournera

{ Balance: 80 }


0 commentaires