代码之家  ›  专栏  ›  技术社区  ›  karimlo

如何使用VueJS 3检索用户在Firebase中创建的日期

  •  0
  • karimlo  · 技术社区  · 1 年前

    我在Firestore数据库中有一个“概要文件”集合。该集合包含我需要的大部分数据,但包含用户的创建日期。在“身份验证”数据库中,有一个创建的列,其中包含用户创建的日期。

    我想在列表中显示用户创建的日期。从Firebase集合“Profiles”中检索到的所有数据都显示良好,但我在从身份验证中获取数据时遇到了问题。我得到了一个N/A作为后备,以防无法成功检索日期。到目前为止,我所有的细胞都显示N/A。

    v-for循环到配置文件中,但不是身份验证,也许这就是问题所在?

    我错过了什么?

     <tr v-for="user in profiles" :key="user.id">
                <td scope="col-1" class="fs-7 py-2 px-3">{{ formatDate(user) }}</td>
                  </td>
    </tr>
    

    脚本在这里:

    import { ref, onMounted } from "vue";
    import { db } from "../firebase";
    
    import {
      collection, deleteDoc, doc,
      getDocs, updateDoc,
    } from "firebase/firestore";
    
    export default {
        setup() {
            const profiles = ref([]);
            const fetchData = async () => {
                try {
                    const profilesSnapshot = await getDocs(collection(db, "profiles"));
                    profiles.value = profilesSnapshot.docs.map((doc) => {
                        return {
                            id: doc.id,
                            ...doc.data(),
                        };
                    });
                } catch (error) {
                    console.error("Error fetching data:", error);
                }
            };
            onMounted(async () => {
                await fetchData();
            });
            const formatDate = (user) => {
      if (user.metadata && user.metadata.creationTimestamp) {
        const date = new Date(user.metadata.creationTimestamp.seconds * 1000); // Assuming timestamp is in seconds
        return date.toLocaleDateString(); 
      } else {
        return 'N/A'; // This is the value I am getting now.
      }
    };
            return {
              profiles,
              formatDate, 
            };
        },
    };
    
    1 回复  |  直到 1 年前
        1
  •  1
  •   Frank van Puffelen    1 年前

    Firebase Authentication客户端SDK(例如您正在使用的JavaScript SDK)可以让您访问当前登录用户的创建时间戳,但不能访问其他用户的配置文件信息。

    如果您需要所有用户的这些信息,您应该将其存储在数据库中,就像处理其他配置文件信息一样。