Я получаю свои данные из средства выбора, чтобы пользователь мог редактировать и обновлять таблицу «Tarefas». Проведя несколько тестов, я понял, что мне нужен дочерний код от «Tarefas», чтобы сделать его современным, но я не знаю, как создать этот код. На странице «Пользователь» я получаю данные с помощью «user.uid», и теперь мне интересно, нужен ли мне еще один «.child», показывающий ключ ребенка от «Tarefa». Проблема здесь в том, что я понятия не имею, какая команда это делает.
Когда я ставлю «.set», он сохраняет данные без «первичного ключа» и стирает всю таблицу. Однако при обновлении «Тарефа» (ключ), выбранный пользователем, также необходимо обновить.
constructor() {
super();
this.state = {
status: '',
descricao: '',
valor: '',
titulo: [],
titulo_selecionado: ""
};
this.cadastroanuncio = this.cadastroanuncio.bind(this);
firebase.auth().onAuthStateChanged((user) => {
if (user) {
firebase.database().ref('Tarefas').child(user.uid).on('value', (snapshot) => {
let state = this.state;
state.titulo = [];
snapshot.forEach((childItem) => {
state.titulo.push({
key: childItem.key,
titulo: childItem.val().titulo,
status: (String(childItem.val().status)),
descricao: childItem.val().descricao,
valor: childItem.val().valor,
});
});
this.setState(state);
});
}
});
}
RetornarDadosAnuncio = ((titulo) => {
this.state.titulo.map((item, index) => {
if (item.titulo == titulo) {
//Atualizar os campos do formulario
this.setState({titulo_selecionado: item.titulo, status: item.status, descricao: item.descricao, valor: item.valor});
}
});
});
//Code that I do both pro ccreate and now pro update ...
cadastroanuncio() {
if (this.state.titulo.length > 0) {
firebase.auth().onAuthStateChanged((user) => {
firebase.database().ref('Tarefas').child(user.uid).set({
titulo:this.state.titulo,
descricao:this.state.descricao,
valor:this.state.valor,
status:this.state.status,
});
});
alert("Tarefa Atualizada");
}
}
render() {
return (
<View style={styles.container}>
<Text style={styles.logoText}>Selecione o Anuncio:</Text>
<Text style={styles.texto}>Titulo do Anuncio:</Text>
<Picker
selectedValue={this.state.titulo_selecionado}
style={styles.picker}
onValueChange={(itemValue, itemIndex) => this.RetornarDadosAnuncio(itemValue)}>
{this.state.titulo.map((item, index) => {
return (
<Picker.Item label={item.titulo} value={item.titulo} key={index} />
);
})}
</Picker>
<Text style={styles.texto}>Titulo do Anuncio:</Text>
<TextInput style={styles.inputBox}
underlineColorAndroid='rgba(0,0,0,0)'
placeholder="Titulo"
placeholderTextColor="#ffffff"
selectionColor="#fff"
value={this.state.titulo_selecionado}
onChangeText={(titulo) => this.setState({ titulo })}
/>
<Text style={styles.texto}>Descrição do Anuncio:</Text>
<TextInput style={styles.inputBox}
underlineColorAndroid='rgba(0,0,0,0)'
placeholder="Descrição"
placeholderTextColor="#ffffff"
selectionColor="#fff"
value={this.state.descricao}
onChangeText={(descricao) => this.setState({ descricao })}
/>
<Text style={styles.texto}>Valor do Anuncio:</Text>
<TextInput style={styles.inputBox}
underlineColorAndroid='rgba(0,0,0,0)'
placeholder="R$0000,00"
placeholderTextColor="#ffffff"
selectionColor="#fff"
keyboardType="number-pad"
value={this.state.valor}
onChangeText={(valor) => this.setState({ valor })}
/>
<Text style={styles.texto}>Status:</Text>
<Picker
selectedValue={this.state.status}
style={styles.picker}
onChangeText={(status) => this.setState({ status })}
onValueChange={(itemValue, Index) =>
this.setState({ status: itemValue })
}>
<Picker.Item label="Não Realizado" value="0" />
<Picker.Item label="Realizado" value="1" />
</Picker>
<TouchableOpacity style={styles.button} onPress={this.cadastroanuncio}>
<Text style={styles.buttonText}>Atualizar Anuncio</Text>
</TouchableOpacity>
</View>
);
}
}
Firebase