Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase通过添加单个字段的值来更新单个字段_Javascript_Firebase_Google Cloud Firestore - Fatal编程技术网

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;

道格,再次感谢你,天才。送你一品脱!