【问题标题】:iterate through Obejct from Firestore遍历 Firestore 中的对象
【发布时间】:2021-08-17 07:04:38
【问题描述】:

我很困惑。我有一个 Firestore 数据库,其中包含一组餐点 =>,而不是餐点类型 =>,然后是带有特定信息的不同地图。 (见截图)。

与:

async function getMenu(){
        const items = [];
        try {
            setLoading(true)
            const querySnapshot = await getDocs(collection(db, "meals"));
            querySnapshot.forEach((doc) => {
                items.push(doc.data());
                console.log(doc.data());
            })
        } catch (error) {
            console.log(error)
        }
        setLoading(false);
        setMenus(items);
    }

    useEffect(() => {
        getMenu();
    },[]);

我的控制台显示:

Object { "Currywurst Pommes": {…} } Object { "Hähnchen Salat": {…}, "Gemischter Salat": {…}, "Tomate-Mozarella": {…}, Beilagensalat: {…} }

现在我想输入每个对象并获取每顿饭的具体信息。我该怎么做?

我正在为我的 WebApp 使用 React。

提前感谢您的帮助

【问题讨论】:

    标签: javascript reactjs firebase google-cloud-firestore


    【解决方案1】:

    如果您想获取所有详细信息,例如食物的属性“描述”,您可以这样做:

    async function getMenu(){
        const items = [];
        try {
            setLoading(true)
            const querySnapshot = await getDocs(collection(db, "meals"));
            querySnapshot.forEach((doc) => {
                items.push(doc.data());
                console.log(doc.data());
    
                var data = doc.data();
                Object.keys(data).forEach((key) => {
                   var value = data[key];
                   // handle data of element, like 'desc'
                   console.log(value.desc);
                })
            })
        } catch (error) {
            console.log(error)
        }
        setLoading(false);
        setMenus(items);
    }
    
    useEffect(() => {
        getMenu();
    },[]);
    

    【讨论】:

    • 是的,我自己解决了,但感谢您的回答:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 2014-11-04
    • 2011-06-15
    • 1970-01-01
    • 2014-08-09
    • 2018-07-15
    • 2015-06-14
    相关资源
    最近更新 更多