Ваш updates
содержит эти два ключа:
${ticker}/transactions/${newTransactionKey}
${ticker}
Это помогает понять, что база данных реального времени обрабатывает обновление с несколькими местоположениями как список операторов set
. Итак, первая строка устанавливает значение для глубокого ключа под ${ticker}
, а затем вторая строка устанавливает значение ${ticker}
.
Это означает, что второй ключ полностью перезапишет первый ключ. Поскольку это всегда так, это ошибка программирования, и база данных отклоняет ее.
Если вы хотите обновить category
, shares
и cost
в рамках обновления, вам понадобится чтобы добавить их по отдельности:
let updates = {}
const newTransactionKey = docRef.child('transactions').push().key;
updates[`${ticker}/transactions/${newTransactionKey}`] ={
date: new Date().toString(),
transaction: `${Number(values.shares)} shares added @ $${perShare} ea`
}
updates[`${ticker}/category`] = values.category;
updates[`${ticker}/shares`] = newShares;
updates[`${ticker}/cost`] = newCost;
Теперь есть 4 отдельных обновления под ${ticker}
, и ни одно из них не пересекается с другим.