Сохранение данных из firestore

#javascript #vue.js #asynchronous #google-cloud-firestore

#javascript #vue.js #асинхронный #google-облако-firestore

Вопрос:

Я не знаю, как сохранить данные из firestore, я попытался сохранить их с помощью this.favLists, поэтому мне не нужно отправлять запросы каждый раз, когда я отправляю запрос.

 export default defineComponent({
 data() {
  return{
   favLists: '',
  }
 },
 methods: {
  async getFavorite() {
  var docRef = 
   db.collection("userFavorites").doc(this.currentUser.uid);
   docRef.get().then(function(doc) {
      if (doc.exists) {
        this.favLists = doc.data()
        console.log(doc.data())
        console.log(this.favLists)
      } else {
        console.log("No such document!");
      }
  }).catch(function(error) {
    console.log("Error getting document:", error);
  });
},
  

Комментарии:

1. Что вы получаете, когда вы регистрируете консоль this.favLists ?

2. Я просто просто получаю сообщение об ошибке «Ошибка при получении документа: TypeError: не удается установить свойство ‘favLists’ неопределенного значения при оценке (App.vue?3dfd:298)»

3. где вы favLists сначала объявили переменную?

4. в разделе данных того же файла

5. Не могли бы вы вставить этот код в вопрос, пожалуйста

Ответ №1:

Похоже, что есть проблема с областью действия. Попробуйте заменить функции обратного вызова функциями со стрелками:

 export default defineComponent({
 data() {
  return{
   favLists: '',
  }
 },
 methods: {
  async getFavorite() {
  var docRef = 
   db.collection("userFavorites").doc(this.currentUser.uid);
   docRef.get().then((doc) => {
      if (doc.exists) {
        this.favLists = doc.data()
        console.log(doc.data())
        console.log(this.favLists)
      } else {
        console.log("No such document!");
      }
  }).catch((error) => {
    console.log("Error getting document:", error);
  });
},