我正在尝试根据另一个集合的数据来更新一个集合的数据。
例如,我试图完成以下任务:
.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
如果以后要查看新值,则可以再次get()同一文档。如果您需要记住更改后的对象,只需保留在data
某个位置,并确保实际修改其属性即可:
data.ticketsold += element.entryTicketNumber;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句