Удалить документ, получив имя документа в Cloud Firestore - PullRequest
0 голосов
/ 09 сентября 2018

Работал над поиском способа удаления документа, на который нажали, с помощью React Native и Cloud Firestore.Я не могу найти способ получить идентификатор документа и затем использовать его в своем коде для замены значения deleteItemId.Есть идеи?

Моя коллекция с документом, показывающим:

enter image description here

Мой код:

componentDidMount(){
    this.getItems();
    const { currentUser } = firebase.auth();
    this.setState({ currentUser });
  }

  getItems = async () => {
    this.setState({ refreshing: true });
    this.unsubscribe = await this.ref.onSnapshot((querySnapshot) => {
          const todos = [];
          querySnapshot.forEach((doc) => {
            todos.push({
              tips: doc.data().tips,
              date: doc.data().date,
              user: doc.data().user,
              like: doc.data().like
            })
          })
          this.setState({
            refreshing: false,
            getData: todos
          })
        })
  }
  deletePost = () => {
     const deleteItemId = "SELECTED DOCUEMNT ID HERE";
     firestore.collection("tips").doc(deleteItemId).delete().then(function() {
          alert("deleted")
      }).catch(function(error) {
          alert("Error removing document: ", error);
      });

  }
  renderItem = ({ item, index }) => {
    let date = item.date;
    return (
      <View style={styles.tips}>
      <View style={styles.wrapper}>
        <View style={styles.profilePicture}>
          <View></View>
        </View>
        <View style={styles.right}>
          <Text style={styles.username}>@{item.user}</Text>
          <Text style={styles.date}>{ moment(item.date).fromNow() }</Text>
        </View>
      </View>
      <Text style={styles.text}>{item.tips}</Text>
      <View style={styles.bar}>
        <Text><Icon onPress={() => this.like()} style={styles.heart} type="Octicons" name="heart" /> {item.like}</Text>
        <Text onPress={() => {
          this.setModalVisible(true);
        }}><Icon style={styles.comment} type="FontAwesome" name="comment-o" />  {item.replies}</Text>
        <Text onPress={() => this.deletePost()}><Icon style={styles.settings} type="Octicons" name="kebab-vertical" /></Text>
      </View>
      </View>
    )
  }

1 Ответ

0 голосов
/ 10 сентября 2018

Каждый раз, когда вы нажимаете TODO на todos, не забудьте также указать идентификатор документа:

todos.push({
  id: doc.id,
  tips: doc.data().tips,
  date: doc.data().date,
  user: doc.data().user,
  like: doc.data().like
})

Затем при рендеринге TODO вы включаете идентификатор в вывод рендеринга элемента:

<Text onPress={() => this.deletePost(styles.id)}>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...