【发布时间】:2021-07-23 03:59:29
【问题描述】:
我正在创建一个费用跟踪器应用,其中:
-
(任务已完成)用户可以设置每月预算(即 3,000 美元),该预算存储在年月集合中的“--currentBudget--”文档中。
-
(任务完成) 用户可以通过表单(标题、金额、类别、日期)添加费用,该表单存储在年月集合中的唯一文档中,然后数据按总支出和分类总支出在“--totalSpent--”中汇总。
-
(未完成) 用户可以删除会更新“--totalSpent--”中的值的费用。我将如何使用 Cloud Firestore 执行此操作?我想我可以参考我正在删除的文档,并根据总支出和分类的总支出将金额减少到其受尊重的年月(日期)记录。
Firestore 控制台 https://i.stack.imgur.com/eKTUg.jpg
/* ADD EXPENSE */
function addExpense(user) {
// DOM Form Selectors
const expenseForm = document.getElementById('expense-form');
const expenseTitle = document.getElementById('expense-title');
const expenseAmount = document.getElementById('expense-amount');
const expenseCategory = document.getElementById('expense-category');
const expenseDate = document.getElementById('expense-date');
// Submit Event
expenseForm.addEventListener('submit', e => {
e.preventDefault();
// Database Reference
const increment = firebase.firestore.FieldValue.increment(expenseAmount.value);
const expenseRef = db.collection('users').doc(user.uid).collection(expenseDate.value).doc();
const totalSpent = db.collection('users').doc(user.uid).collection(expenseDate.value).doc('--totalSpent--');
// Database Batch Write
const batch = db.batch();
// Creates Unqiue Expense Document
batch.set(expenseRef, { title: expenseTitle.value, amount: expenseAmount.value, category: expenseCategory.value, date: expenseDate.value });
// Updates totalSpending
batch.set(totalSpent, { totalSpending: increment }, { merge: true });
//Updates totalSpending by category
batch.set(totalSpent, { [expenseCategory.value]: increment }, { merge: true });
batch.commit();
// Reset Form
expenseForm.reset();
modal[1].classList.add('hidden');
overlay.classList.add('hidden');
});
}
【问题讨论】:
标签: javascript firebase google-cloud-firestore