Firebase python - Как проверить, существует ли поле (свойство) в документе - PullRequest
0 голосов
/ 29 апреля 2020

Мы прочитали документ из firebase, используя Python.

 doc_ref           = db.collection(u'collection_name').document(collection_abc)
        doc_fetched    = doc_ref.get()
        if (doc_fetched.exists):
            if (doc_fetched.get('doc_field')):

Мы получаем следующую ошибку

KeyError("'doc_field' is not contained in the data")

Как мы можем проверить, существует ли поле doc_fetched в doc_fetched? В этом документе могут быть заполнены некоторые поля, а некоторые не заполнены во время чтения (по схеме).

Мы также попробовали следующее с той же ошибкой.

if (doc_fetched.get('doc_field') != null): 

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

Чтобы решить эту проблему, вы можете просто проверить объект DocumentSnapshot на нуль, как это:

var doc_ref = db.collection('collection_name').doc(collection_abc);
var getDoc = doc_ref.get()
    .then(doc => {
      if (!doc.exists) {
        console.log('No such document!');
      } else {
        if(doc.get('yourPropertyName') != null) {
          console.log('Document data:', doc.data());
        } else {
          console.log('yourPropertyName does not exist!');
        }
      }
    })
    .catch(err => {
      console.log('Error getting document', err);
    });

Или вы можете использовать метод to_dict () , как в @ Дуг Стивенсон ответ

1 голос
/ 29 апреля 2020

Как видно из документации API для DocumentSnapshot , существует метод to_dict () , который предоставляет содержимое документа в виде словаря. Затем вы можете работать с ним, как и с любым другим словарем: Проверить, существует ли данный ключ в словаре

...