javascript - 从包含 2 个数组(值和数量)的文档中将数据从 Firestore 提取到表中

标签 javascript html reactjs firebase google-cloud-firestore

我有一个 Firestore 集合,其中同时包含 2 个文档(可能更多)。 每个文档都有 2 个数组(数量和值),如下面最后一个屏幕截图所示。

我想获取所有数据并每次使用文档数组中的数据创建一行像这样:

Expected result

但我得到的是这个:

Table

Firestore:

Firestore

代码:

export default class NutritionTableOfTheUser extends Component {
constructor() {
    super();
    this.state = {
        tableData: []
    }
}

componentDidMount() {
    const dbRef = collection(db, 'data');
    onSnapshot(dbRef, (querySnapshot) => {
        let foods = [];
        querySnapshot.forEach(doc => {
            foods.push(doc.data())
        });
        this.setState({ tableData: foods })
    })
}

render() {
    return (
        <div className='container mt-3'>
            {/* table */}
            <table className='table table-hover'>
                <thead>
                    <tr>
                        <th>#</th>
                        <th>Food</th>
                        <th>Quantity</th>
                    </tr>
                </thead>

                <tbody>
                    {this.state.tableData.map((row, index) => {
                        return (
                            <tr>
                                <td>{index + 1}</td>
                                <td>{row.value}</td>
                                <td>{row.quantity}</td>
                            </tr>
                        )
                    })}
                </tbody>
            </table>
        </div>
    )
}

最佳答案

尝试

onSnapshot(dbRef, (querySnapshot) => {
        let foods = [];
        querySnapshot.forEach(doc => {
            const {value, quantity} = doc.data()
            for(let i = 0; i < value.length; i++) {
              foods.push({value: value[i], quantity:quantity[i]})
            }
        });
        this.setState({ tableData: foods })
})

关于javascript - 从包含 2 个数组(值和数量)的文档中将数据从 Firestore 提取到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73920091/

相关文章:

浏览器中的 Javascript 对象

html - 文本区域的高度与 Firefox 中的行不匹配

javascript - 如何在不取消 API 调用的情况下使用 axios 设置超时?

Javascript:如何通过单击更改表单字段值

javascript - Highcharts 年龄堆叠

javascript - 如何将标题栏中的输入字段向右扩展

html - CSS - Margin-top 不适用于一个选择器,但在兼容模式下可以

reactjs - ElectronJS React自定义菜单事件未定义

javascript - 尽管对所有项目使用唯一键,但添加新项目时,React 会重新渲染数组中的所有项目

javascript - Azure事件中心Azure功能 Node js集成不起作用