Saya mencoba menyimpan nilai di 'Nombre', tetapi tidak berhasil sama sekali, apakah saya melakukan sesuatu yang salah?

class Appp extends React.Component {
constructor() {
    super()
    this.state = { name: 'hey' }
}
componentDidMount() {
    const nameRef = firebase.database().ref().child('Anonimos').child('wx3czBh22dMQUTNDwD9l').child('Nombre')
    nameRef.on('value', snapshot => {
        this.setState({
            name: snapshot.val()
        })
    })
}

render() {
    return <h1>{this.state.name}</h1>
}
}

Firebase

0
David Díaz 4 Juli 2020, 16:28

1 menjawab

Jawaban Terbaik

Kode Anda menggunakan API untuk Firebase Realtime Database. Tetapi tangkapan layar menunjukkan data di Cloud Firestore. Meskipun kedua database adalah bagian dari Firebase, keduanya benar-benar terpisah dan API untuk satu database tidak dapat mengakses data di database lainnya.

Untuk mengakses data di Cloud Firestore, ikuti dokumentasi untuk database itu: https://firebase.google.com/docs/firestore/quickstart

Sesuatu seperti:

componentDidMount() {
    const nameRef = firebase.firestore().collection('Anonimos').doc('wx3czBh22dMQUTNDwD9l')
    nameRef.onSnapshot(doc => {
        this.setState({
            name: doc.data().Nombre
        })
    })
}

Selain sintaks baru, perubahan terbesar di sini adalah bahwa kode ini membaca seluruh dokumen, bukan hanya bidang Nombre, dan kemudian hanya menetapkan nama di negara bagian. Jadi meskipun hasil akhirnya sama, ini memuat lebih banyak data daripada contoh Realtime Database Anda, karena API tersebut memungkinkan pemuatan node apa pun, sementara Cloud Firestore selalu memuat dokumen lengkap.

1
Frank van Puffelen 4 Juli 2020, 13:58