【问题标题】:How can I put these object data to the mui-datatable?如何将这些对象数据放入 mui-datatable?
【发布时间】:2021-10-28 09:56:28
【问题描述】:

我有这些来自 firestore 的 doses 对象。

我已经可以显示除对象doses之外的所有数据

class Users extends Component {
  constructor() {
    super();
    this.state = { users: [] };
  }

  columns = [
    "Name",
    "Address",
    "Vaccine",
  ];


  componentDidMount() {
    firestore
      .collection("users")
      .get()
      .then((snapshot) => {
        const users = [];
        snapshot.forEach((doc) => {
          const data = doc.data();
          console.log("doses", data.doses);
             doc.data().doses.forEach((index) => {
        console.log(index.selectedVaccine);
      });
      
          users.push({
            ...((data.firstName && data.lastName) || data.middleName == " "
              ? {
                  Name:
                    data.firstName +
                    " " +
                    data.middleName +
                    "." +
                    data.lastName,
                }
              : {}),
            Email: data.email,
            Address: data.address,
          });
        });
        this.setState({ users: users });
        // console.log(snapshot)
      })
      .catch((error) => console.log(error));
  }

  render() {
    return this.state.users ? (
      <MUIDataTable
        title={"List of Users"}
        columns={this.columns}
        data={this.state.users}
        options={this.options}
      />
    ) : (
      <div>Loading...</div>
    );
  }
}

export default Users;

当我console.log("doses", data.doses); 时,我可以查看所有用户的doses 数据,但无法在表格中显示。当我尝试这部分代码时,这将导致 mui-datatable 内“没有匹配的数据”:

   doc.data().doses.forEach((index) => {
            console.log(index.selectedVaccine);
          });
          

如何在 mui 数据表中显示这些剂量?

更新:错误仍然相同,它在 mui-datatable 中显示“抱歉,未找到匹配记录”。

columns = ["Name", "Email", "Phone Number", "Address", "Vaccine"];

componentDidMount() {
    firestore
      .collection("users")
      .get()
      .then((snapshot) => {
        const users = [];
        snapshot.forEach((doc) => {
          const data = doc.data();
          console.log("doses", data.doses);
          users.push({
            ...((data.firstName && data.lastName) || data.middleName == " "
              ? {
                  Name:
                    data.firstName +
                    " " +
                    data.middleName +
                    "." +
                    data.lastName,
                }
              : {}),

            Email: data.email,
            "Phone Number": data.phoneNumber,
            Address: data.address,
            Vaccine: data.doses.selectedVaccine,
          });
        });
        this.setState({ users: users });
      })
      .catch((error) => console.log(error));
  }

这是错误:

【问题讨论】:

    标签: javascript reactjs firebase google-cloud-firestore mui-datatable


    【解决方案1】:

    您可以将列添加到剂量的columns 数组中,也可以将剂量的数据添加到users 数组中。

    查看以下代码示例:

    columns = [
        "Name",
        "Address",
        "Dose 1",
        "Dose 2",
        "First Dose",
        "First Vaccinator",
        "Dose ID"
    ];
    
    users.push({
        ...((data.firstName && data.lastName) || data.middleName == " " ? {
            Name: data.firstName +
                " " +
                data.middleName +
                "." +
                data.lastName,
        } : {}),
        "Address": data.address,
        "Dose 1": data.doses.dose1,
        "Dose 2": data.doses.dose2,
        "First Dose": data.doses.firstDose,
        "First Vaccinator": data.doses.firstVaccinator,
        "Dose ID": data.doses.id
    });
    

    此外,您似乎收到“无匹配数据”错误,因为您的 columns 数组中有“疫苗”,但您的 users 数组中没有它,而您有“电子邮件”在您的 users 数组中,但您的 columns 数组中没有它。

    【讨论】:

    • 我已经更新了新代码的帖子,但仍然有同样的错误
    • 我已经发布了错误的图片。谢谢
    猜你喜欢
    • 2014-01-02
    • 2013-05-04
    • 1970-01-01
    • 2021-06-09
    • 2018-09-27
    • 2013-07-06
    • 2023-03-22
    • 1970-01-01
    • 2019-01-14
    相关资源
    最近更新 更多