Как я могу получить второй идентификатор пользователя в двух идентификаторах пользователя в одном поле - PullRequest
0 голосов
/ 20 июня 2020

У меня есть только чат для двух пользователей, который помещает оба идентификатора пользователя в поле (чтобы сделать его новым идентификатором). Мне нужно получить второй идентификатор и показать букву в списке. Как я могу получить вторую часть идентификатора после дефиса

{
  "chat" : {
    "st98ySAm5CNeq2WVDTCAQJ3ZcpP2-2C95b9MJprgpCITMXknPuXS52mR2" : {
      "-M9Qk0mmv-r2C0kaFqpn" : {
        "_id" : 1591750954541,
        "createdAt" : 1591750954541,
        "order" : -1591750954541,
        "text" : "Hello there",
        "uid" : "2C95b9MJprgpCITMXknPuXS52mR2"
      },
      "-M9QkBv-rl18Nc4OyfpV" : {
        "_id" : 1591751000122,
        "createdAt" : 1591751000122,
        "order" : -1591751000122,
        "text" : "Hello",
        "uid" : "st98ySAm5CNeq2WVDTCAQJ3ZcpP2"
      }
    },
    "st98ySAm5CNeq2WVDTCAQJ3ZcpP2-heGJLHnvwMgofczT9PHSlRwANCB2" : {
      "-M9_eYajRuO0RjGDJHSM" : {
        "_id" : 1591917295564,
        "createdAt" : 1591917295564,
        "order" : -1591917295564,
        "text" : "Mmmm",
        "uid" : "heGJLHnvwMgofczT9PHSlRwANCB2"
      },
      "-M9_efDQ1qHUrLMndU2o" : {
        "_id" : 1591917327330,
        "createdAt" : 1591917327330,
        "order" : -1591917327330,
        "text" : "How are you BIG MAN",
        "uid" : "st98ySAm5CNeq2WVDTCAQJ3ZcpP2"
      }
    },
    "yKaXQZCbn8RdxO96tsbf9ZQHK3g1-2C95b9MJprgpCITMXknPuXS52mR2" : {
      "-M9QUli8eRb7gEEwgIM8" : {
        "_id" : 1591746694381,
        "createdAt" : 1591746694381,
        "order" : -1591746694381,
        "text" : "Hello",
        "uid" : "2C95b9MJprgpCITMXknPuXS52mR2"
      },
      "-M9Qji3QtqOKYrRZV7Wg" : {
        "_id" : 1591750873750,
        "createdAt" : 1591750873750,
        "order" : -1591750873750,
        "text" : "Hi bro",
        "uid" : "yKaXQZCbn8RdxO96tsbf9ZQHK3g1"
      },
      "-M9QjwXH4diBq0mj_aPz" : {
        "_id" : 1591750933005,
        "createdAt" : 1591750933005,
        "order" : -1591750933005,
        "text" : "Hi how are you",
        "uid" : "2C95b9MJprgpCITMXknPuXS52mR2"
      }
    }
  }
}

Я разделил идентификатор на и взял вторую часть, но таким образом он создает несколько массивов каждый раз, когда он зацикливается и создает несколько пустых объектов

componentDidMount() {
    firebase
      .database()
      .ref()
      .child("chat")
      .on("child_added", snapshot => {
          const anotherUsers = [];
          let array = snapshot.key.split("-");
          let a = array[1];
          anotherUsers.push({
            key: a
          });
          this.setState({
            unknownUser2: anotherUsers
          });
     
      });
}

Ответы [ 2 ]

1 голос
/ 21 июня 2020

Попробуйте что-нибудь вроде этого

componentDidMount() {
    firebase
      .database()
      .ref()
      .child("chat")
      .on("child_added", snapshot => {
          const unknown = [...this.state.unknownUser2];
          let array = snapshot.key.split("-");
          let a = array[1];
          const updated=[...unKnown,{key: a}]
          this.setState({
            unknownUser2: updated
          });
     
      });
}
0 голосов
/ 21 июня 2020

Чтобы показать вторую часть каждого ключа под chat, вероятно, проще использовать событие value:

firebase
  .database()
  .ref()
  .child("chat")
  .on("value", snapshot => {
      const anotherUsers = [];
      snapshot.forEach((child) => {
         const second = child.key.split("-")[1];
         anotherUsers.push({ key: second });
      });
      this.setState({
        unknownUser2: anotherUsers
      });
  });
...