【问题标题】:Filtering object in Javascript react-nativeJavascript react-native中的过滤对象
【发布时间】:2020-05-04 11:38:04
【问题描述】:

我有这样的数据结构: 这是我的聊天组件的源代码:https://pastebin.com/JJQFQyHi

每个聊天都有两个成员,我想在我的聊天列表中显示其他人的数据 profile_picture 和用户名。所以我想删除不必要的数据。我使用firebase实时数据库。 这就是我试图摆脱不必要的数据的方式。

getChats = _userId => {
    let data;
    var readedData = firebase
      .database()
      .ref('chats')
      .orderByChild('members/' + _userId)
      .equalTo(true);
    readedData.once('value', snapshot => {
      this.setState({ chats: snapshot.val() });
      // console.log(JSON.stringify(this.state.chats));
      data = snapshot.val();
      delete data._userId;
      delete data.members;
      console.log(data);
    });
  };

控制台日志:

> {"-M4NzlagjmeFH7IR_Api": {"lwcIQTcpAae4e38hrD2K5Ar76W93": {"data":
> [Object]}, "members": {"lwcIQTcpAae4e38hrD2K5Ar76W93": true,
> "tempuser": true}, "tempuser": {"data": [Object]}},
> "-M4O-aIxt9w2iKuCDweN": {"lwcIQTcpAae4e38hrD2K5Ar76W93": {"data":
> [Object]}, "members": {"lwcIQTcpAae4e38hrD2K5Ar76W93": true,
> "tempuser": true}, "tempuser": {"data": [Object]}},
> "-M4Q05H1lEUIyWqLJyoQ": {"lwcIQTcpAae4e38hrD2K5Ar76W93": {"data":
> [Object]}, "members": {"lwcIQTcpAae4e38hrD2K5Ar76W93": true}},
> "-M649remSnfBLBuYJIXO": {"lwcIQTcpAae4e38hrD2K5Ar76W93": {"data":
> [Object]}, "members": {"lwcIQTcpAae4e38hrD2K5Ar76W93": true,
> "tempuser": true}, "messages": {"-M64A0ydh-WJstJIFIr1": [Object],
> "-M66cLC6OjQhlyNN5uDq": [Object], "-M66eWivUodiVtHIkfGv": [Object]},
> "tempuser": {"data": [Object]}}}

【问题讨论】:

    标签: javascript firebase react-native object firebase-realtime-database


    【解决方案1】:

    当您调用snapshot.val() 时,您会得到一个对象,如控制台日志中所示。然后将此值分配给data

    当您尝试从此data 对象中删除delete 键时,Javascript 会尝试从对象的顶层删除它们。由于顶层没有具有给定名称(members_userId)的属性,因此无法过滤掉任何内容。

    如果您需要tempusers 的列表,可以使用snapshotforEach 方法构建它。

    readedData.once("value", (snapshot) => {
      const userData = [];
      snapshot.forEach((data) => {
        userData.push(data.tempuser)
      });
    
      console.log(userData); // this should contain the tempusers.
    });
    

    【讨论】:

      猜你喜欢
      • 2019-10-28
      • 1970-01-01
      • 2020-05-29
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2020-11-18
      相关资源
      最近更新 更多