Javascript Firebase通过添加单个字段的值来更新单个字段
我正在尝试根据另一个集合的数据更新一个集合的数据 例如,我正在努力完成以下任务:Javascript Firebase通过添加单个字段的值来更新单个字段,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在尝试根据另一个集合的数据更新一个集合的数据 例如,我正在努力完成以下任务: .then(function(doc) { if (doc.exists) { //Log initial doc console.log("Document data:", doc.data()); //Work out sold value based on
.then(function(doc) {
if (doc.exists) {
//Log initial doc
console.log("Document data:", doc.data());
//Work out sold value based on whats in DB already and what just sold
// by adding entryTicketNumber to ticketsold
const soldValue = doc.data().ticketsold + element.entryTicketNumber;
//Log out to console to make sure change took place
console.log("Document data:", doc.data());
//Push update to db
doc.ref.update({ticketsold: soldValue})
}
console.logs工作正常,但字段更改不正常。我是否完全走错了路?doc.data()
每次调用都会返回文档数据的新副本。这就是为什么它是一个方法调用而不是一个属性。如果在一个副本中更改对象,则在其他副本中不会看到它们。事实上,您甚至从来没有真正更改过数据,而且您甚至不需要这样做。只要这样做:
const data = doc.data();
console.log("Document data:", data);
const soldValue = data.ticketsold + element.entryTicketNumber;
doc.ref.update({ticketsold: soldValue}) // you should catch errors here
如果希望以后看到新值,可以再次获取相同的文档。如果需要记住已更改的对象,只需将数据保留在某个位置,并确保实际修改其属性:
data.ticketsold += element.entryTicketNumber;
道格,再次感谢你,天才。送你一品脱!