#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];