Должно работать следующее:
mounted() {
const id = this.$route.params.id;
const cityRef = db.collection("cards").doc(id);
cityRef.get().then(doc => {
if (doc.exists) {
console.log(doc.data())
this.imageurl = doc.data().imageurl
} else {
console.log('no data')
}
})
.catch(error => {
//.....
}
}
Как объяснено в Vue - Невозможно установить свойство undefined в обещании , так как "вы используете ключевое слово function
, this
находится внутри области действия анонимной функции, а не экземпляра vue ".
Используя функцию стрелки, вы исправите ошибку.
См. также комментарии, которые я сделал надругой ответ: вызывая асинхронный метод get()
, вы получаете Обещание, которое «разрешается с помощью DocumentSnapshot
, содержащего текущее содержимое документа». На DocumentSnapshot
необходимо вызвать метод data()
, чтобы «извлечь все поля в документе как объект». Затем вам нужно присвоить значение одному из этих полей, например this.imageurl = doc.data().imageurl;