我目前正在为我的Final Year Project(相对于Firestore而言相对较新)使用一个单一的Firestore开发移动应用程序和Web应用程序。
当客户从移动应用程序注册到应用程序时,数据将存储在“用户”集合下,该集合是代表每个唯一客户[Document]的生成的唯一ID,然后是“个人资料”和“订单”存储了他们的详细信息。
客户成功注册后的当前Firestore设置:
现在,我正在尝试在Web应用程序中显示“配置文件”的子集合。我已经成功地做到了,但是我仅限于一个用户。
created() {
db.collection('users/FbkKmQMaGYY2gErEneImmjUMvRt1/profile').onSnapshot((snapshotChange) => {
this.Users = [];
snapshotChange.forEach((doc) => {
this.Users.push({
key: doc.id,
fname: doc.data().fname,
lname: doc.data().lname,
username: doc.data().username,
mail: doc.data().mail,
phone: doc.data().phone,
adress: doc.data().adress,
img: doc.data().img,
})
});
})
},
我的问题:是否可以使用任何方法来调用所有子集合“配置文件”(如上图所示),以便可以出于管理目的将其显示在Web应用程序中。
谢谢您的帮助! :)
答案 0 :(得分:0)
如果要在所有用户中显示所有配置文件,则可以使用集合组查询:
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" >
<!--android:theme="@style/defaultTitleTheme"
app:titleTextColor="@color/white"-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingStart="@dimen/icon_size"
android:text="@string/title_home"
style="@style/defaultTitleTheme"
tools:ignore="RtlSymmetry" />
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.coordinatorlayout.widget.CoordinatorLayout>
其余代码可以保持不变。
现在,这将从名为db.collectionGroup('profile').onSnapshot((snapshotChange) => {
的所有集合中获取所有文档。
请注意,无法仅在profile
下获得profile
集合,因此必须确保集合名称足够唯一/特定。