Не удается прочитать значение документа — Firestore

#javascript #typescript #firebase #google-cloud-firestore

#javascript #typescript #firebase #google-облако-firestore

Вопрос:

У меня есть коллекция, которая сохраняет итоговые данные по дате.

Имя коллекции — scan_total_dtwise , имя документа — это название компании, например Patrol 1 . В этом документе я устанавливаю записи по дате, см. Рисунок ниже:

введите описание изображения здесь

Если Doc не существует, я могу создать его и присвоить ему номер 1, используя приведенный ниже код:

 firebase.firestore().collection("scan_total_dtwise").doc(this.splitted_1).set({
  [this.show_year_month_date] : 1,
  

Но если он существует, я не могу его обновить, потому что я не знаю, как получить доступ incDoc.data().4-AUG-2020 .

Как мне получить доступ, console.log(incDoc.data().date_doc_to_update); поскольку он не определен. Смотрите изображение ниже console.log("Document data:", doc.data()); :

 update_exisiting_serial_total(){
  var date_doc_to_update = this.show_year_month_date
  var docRef = firebase.firestore().collection('scan_total_dtwise').doc(this.splitted_1);
  firebase.firestore().runTransaction(transaction=> {
    return transaction.get(docRef).then(incDoc=> { 
        //if no value exist, assume it as 0 and increase to 1
        console.log(incDoc.data().date_doc_to_update);
        var newIncId = (incDoc.data().date_doc_to_update || 0)   1;
        transaction.update(docRef, { [this.show_year_month_date]: newIncId });
        return newIncId;
        ...//more code
  

введите описание изображения здесь

Ответ №1:

Если вы хотите получить доступ к свойству объекта с помощью переменной, вы должны использовать обозначение скобок JavaScript для индексации в объекте:

 incDoc.data()[date_doc_to_update]
  

Или более четко сформулировать, IMO:

 const data = incDoc.data();
value = data[date_doc_to_update];