пытаясь получить данные из функции, бросающей undefined

я пытаюсь сохранить данные, полученные из firestore, в переменную firebasecart, но она выдает undefined. пожалуйста, помогите мне получить значение, полученное из firestore doc.data().cart для глобального использования.

    var firebasecart;
    console.log(firebascart); //throwing undefined

    function readData1(user){
    let db= firebase.firestore()
    return db.collection("users").doc(user.uid)
    .get()
    .then(function(doc) {
       if (doc.exists) {

           if (doc.data().cart.length > 0) {
               console.log(doc.data().cart);
               **firebasecart = doc.data().cart**
               console.log(storage.getCart())
           }
           else{
               console.log(doc.data().cart.length);
               console.log('true');
               console.log(doc.data().cart.length);
               }
    console.log("Document data:", doc.data().cart);
    
} else {
    // doc.data() will be undefined in this case
    console.log("No such document!");
}
})
.catch(function(error) {
    console.log("Error getting documents: ", error);
});
}
console.log(firebascart); //throwing undefined

person chandramoli singh    schedule 19.11.2020    source источник


Ответы (1)


Мне трудно читать ваш код. Хотя это и не решение, использование async/await вместо цепочки промисов может облегчить вам изолирование вашей проблемы.

const someFunction = async (req, res) => {
    const snapshot = await firebase.firestore()
       .collection("users")
       .doc(user.uid)
       .get()

    const data = snapshot.data()
    // Do stuff with data
    console.log(data.property)
}
person omeanwell    schedule 19.11.2020