Запрос одного значения из firebase, React Native-Error, undefined

Я пытаюсь запросить значение из документа в коллекции, в базе огня, в частности, «currentKilos»:

Запрос одного значения из firebase, React Native-Error, undefined

Я использую следующую функцию для запроса:

showKiols = () => {
  db.collection('users').doc(this.props.user.uid).collection('mainData').doc('currentKilos').get().then.subscribe(value=> {
        this.updatedKilos = value;
        alert(this.updatedKilos);           
    })      
}

Однако я получаю прикрепленную ошибку:

Запрос одного значения из firebase, React Native-Error, undefined

Кроме того, я также попробовал функцию ниже, но она не работает:

db.collection('users').doc(this.props.user.uid).collection('mainData').doc('currentKilos').valueChanges().subscribe(value => {
this.updatedKilos = value.currentKilos;
    alert(this.updatedKilos)
})

К вашему сведению, это функция для добавления currentKilos в firebase, и она работает нормально:

updateKilos = () => {
        db.collection('users').doc(this.props.user.uid).collection('mainData').doc('currentKilos').set({ currentKilos: this.state.currentKilos })
        alert('Data Updated')
    }

Ценю твою поддержку.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
71
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я не знаю, откуда вы взяли get().then.subscribe(), но, по крайней мере, then должно быть then((value)=>{...}).

Попробуйте следующее:

showKiols = () => {
db.collection('users')
 .doc(this.props.user.uid)
 .collection('mainData')
 .doc('currentKilos')
 .get()
 .then(value => {
     this.updatedKilos = value.data();
     alert(this.updatedKilos);           
 })
}

Большое спасибо за вашу поддержку. Но это дает значение как «Объект Объект». И когда я изменяю функцию, как показано ниже: showKiols = () => { db.collection('users').doc(this.props.user.uid).collection(‌​'mainData').doc(' cur‌​rentKilos’).get().th‌​en(value=> { this.updatedKilos = value.currentKilos; alert(this.updatedKilos); }) } дает неопределенное значение

AbdalRahman Farag 03.07.2019 01:18

Извините, я забыл включить .data() из value возвращенных. Попробуйте это сейчас.

xon52 03.07.2019 01:23

Нет, нужно извиниться, и я очень ценю вашу поддержку. Он по-прежнему дает «Объект Объект». Я даже пытался использовать JSON.stringify(this.updated Kilos), но тоже не работал

AbdalRahman Farag 03.07.2019 01:35

Я попробовал еще раз с приведенным ниже кодом, и он работает :) showKiols = () => { db.collection('users').doc(this.props.user.uid).collection(‌​'mainData'). doc('cur‌​rentKilos').get().th‌​en(value=> { this.updatedKilos = value.data(); alert(JSON.stringify(this.updatedKilos)); }) } Вы действительно сделали мой день :)

AbdalRahman Farag 03.07.2019 01:37

Другие вопросы по теме