Обновление единой базы документов по идентификатору в Firestore - PullRequest
0 голосов
/ 01 февраля 2020

Как я могу обновить один документ в базе Firestore по его идентификатору?

Я хочу обновить одно "объявление" на основе его идентификатора, но я не знаю, как этого добиться .

Я думаю, смогу ли я передать идентификатор документа в editFunction и оттуда обновить базу документов по переданному идентификатору.

Ниже приведен мой код, который извлекает данные:

retrieveAnnouncement = () => {
    const announcements = [];
    const id = []
    /* retrieve announcements */
    firebase.firestore().collection('announcement').get()
      .then(querySnapshot => {
        querySnapshot.forEach(doc => {
          announcements.push(doc.data());
//here is the unique id that I will use later on to update a single document
          console.log(doc.id)
        });
        this.setState({ content: announcements, docID: id });
        console.log(announcements)
      })
      .catch(err => console.log(err));
};
editSingleAnnouncement = () => {
//get the unique id of an announcement and update it.
}

и здесь он отображает данные, поступающие из магазина:

_renderAnnouncement = ({ item }) => 
//display the content of announcement
  <Card>
    <Text h3>{item.TITLE}</Text>
    <Text h5>{item.CONTENT}</Text>
    <View style={styles.container}>
      <Button title="Edit" containerStyle={{marginLeft: 10, width: 80}} />
      <Button title="Delete" buttonStyle={{backgroundColor: 'red'}} containerStyle={{marginLeft: 10, width: 80}} />
    </View>
  </Card>

и отображает

render () {
  return (
    <View>
    <ScrollView>
      <FlatList data={this.state.content} renderItem={this._renderAnnouncement} keyExtractor={item => item.id} />
    </ScrollView> 
    </View>
  )}

вот изображение моего приложения

изображение 1

1 Ответ

0 голосов
/ 01 февраля 2020

В документации ясно, как обновить документ, когда вы знаете его идентификатор:

var washingtonRef = db.collection("cities").doc("DC");

// Set the "capital" field of the city 'DC'
return washingtonRef.update({
    capital: true
})
.then(function() {
    console.log("Document successfully updated!");
})
.catch(function(error) {
    // The document probably doesn't exist.
    console.error("Error updating document: ", error);
});

. Вам потребуется создать DocumentReference для обновления документа, включая имя набора и идентификатора документа, затем позвоните по номеру update().

В вашем случае, чтобы создать ссылку на документ в объявлениях:

const id = "..."
const ref = firebase.firestore().collection('announcement').doc(id)

Вы должны будете предоставить это ID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...