首页 > 解决方案 > 将值传递给承诺中的另一个变量不起作用

问题描述

我在我的应用程序中有一个使用Vue.jsFirebase的组件,在created()生命周期中,我得到了一个保存在 LocalStorage 中的idget() ,用于对我的firestore数据库中的数据作出承诺。id的 get() 数据过滤器工作正常,但在 promise 中我想将我得到的值传递给另一个变量,但是值NAN在某些字段中会发生变化,你可以在下面的两个 console.log() 中看到。我只想doc.data.bdCalculo 在变量中保持相同的值self.bdCalculo(需要使用self,因为this它不起作用):

created: function(){
                // get the id in localstorage
                let id_di = localStorage.getItem('id_di');
                let self = this
                
                var docRef = db.collection("dis").doc(id_di);

                docRef.get().then(function(doc) {
                    if (doc.exists) {
                       var  diFinal = doc.data();

                console.log("Data that comes from Firestore:", doc.data().bdCalculo);

   // The data in firestore comes with some arrays called Step1, Step2, Step3, Step4 and bdCalculo
                 self.step1 = diFinal.Step1;
                 self.step2 = diFinal.Step2;
                 self.step3 = diFinal.Step3;
                 self.step4 = diFinal.Step4;
                 self.bdCalculo = diFinal.bdCalculo; 
                 console.log("Data after pass the value to self.bdCalculo", self.bdCalculo);
               
                
                // pass the valeu of self.bdCalculo to a method in vue.js
                 self.calcCustoFob(self.bdCalculo);
           
                } else {
                console.log("No such document!");
                }
                }).catch(function(error) {
                    console.log("Error getting document:", error);
                });
            },

第一个 数据console.log是:

在此处输入图像描述

将值传递给self.bdCalculo第二个后的数据console.log()在此处输入图像描述

标签: javascriptfirebasevue.jsgoogle-cloud-firestore

解决方案


推荐阅读