小编Ale*_*amo的帖子

Firestore 根目录中每种类型用户的不同集合

我正在创建一个基于 Cloud Firestore 的应用程序。应用程序的工作方式将与 uber 相同。所以问题是,由于我对 NoSQL 数据库相当陌生,我在为数据库创建良好的结构时遇到了问题。这是我计划用于我的 Android 应用程序的 UML 的链接。我计划使用 Firestore 存储有关用户的信息和其他数据,而实时数据库用于实时地图更新。

我主要关心的是,正如您在 UML 中看到的,它以某种方式显示不同表之间的关系,但 NoSQL 没有表和关系,这让我在这里遇到困难。经过大约 4 个小时的连续互联网搜索后,我仍然不知道该怎么办。我在这里有一些问题希望得到解答:

1)有什么方法可以在不同集合之间创建关系吗?

2)我应该将所有 3 种类型的用户保存在同一集合“用户”中,还是为根中的每种类型创建不同的集合。使用这两种方法会产生什么后果。

如果我使用第一种方法,我可以做什么来区分每种类型的用户。

3)我可以在单个集合(即集合中的子集合)中进行多少深度嵌套?

4)我在同一个应用程序中使用两个不同数据库的决定正确吗?

5)Firebase 是我正在创建的应用程序的正确选择吗?

这些问题可能听起来太初学者了,因为我才刚刚学习。任何帮助,将不胜感激。任何有用的文档、文章或指南的链接也将不胜感激。

java database android firebase google-cloud-firestore

2
推荐指数
1
解决办法
1979
查看次数

如何从Cloud Firestore的阵列数据字段中获取数据?

我正在使用Cloud Firestore,并且字段中有数组数据。那么如何才能分别从数组中获取数据呢?

在此处输入图片说明

java android firebase google-cloud-firestore

2
推荐指数
1
解决办法
1326
查看次数

在Firestore中构建此类数据的正确方法是什么?

我从Google Firebase服务中看过视频并阅读了Cloud firestore的文档,但我无法想象实时数据库.

我想到了这个Web应用程序,我希望从不同类别的产品中存储我的提供程序.我希望通过我的所有产品执行搜索查询,以查找我对此类产品的提供商,并最终访问该提供商信息.

我打算为此目的使用这个结构:

Providers ( Collection )
   Provider 1 ( Document )
      Name
      City
      Categories
   Provider 2
      Name
      City

Products ( Collection )
   Product 1 ( Document )
      Name
      Description
      Category
      Provider ID
   Product 2
      Name
      Description
      Category
      Provider ID
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,一旦我得到我想要的产品,这种方法是否是访问提供商信息的正确方法?

我知道这在实时数据库中是可行的,使用我可以在提供者部分中搜索该提供者的提供者ID,但是使用Firestore我不确定它是否可能或者这是否正确.

java firebase firebase-realtime-database google-cloud-firestore

2
推荐指数
1
解决办法
1544
查看次数

如何在 Firestore 中保存时间戳?

我正在开发一个聊天应用程序,我想存储我的消息的时间戳。我的消息数据类是:

import com.google.firebase.firestore.ServerTimestamp;
import java.util.Date;

public class messgaesDataClass {
    private String messageText;
    private int messageStatus;
    private String messagefrom;
    private @ServerTimestamp Date timestamp;

    public messgaesDataClass(String messageText, int messageStatus, String messagefrom, Date time) {
        this.messageText = messageText;
        this.messageStatus = messageStatus;
        this.messagefrom = messagefrom;
        this.time = time;
    }

    public messgaesDataClass() {
    }

    public String getMessageText() {
        return messageText;
    }

    public void setMessageText(String messageText) {
        this.messageText = messageText;
    }

    public int getMessageStatus() {
        return messageStatus;
    }

    public void setMessageStatus(int messageStatus) {
        this.messageStatus = messageStatus; …
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

2
推荐指数
1
解决办法
3984
查看次数

FireStore 日期查询未按预期工作

我有一个有日期对象的文档。

初始化 Firestore 的代码:

 FirebaseFirestore fireStore = FirebaseFirestore.getInstance();
        FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
                .setTimestampsInSnapshotsEnabled(true)
                .build();
        fireStore.setFirestoreSettings(settings);
        firestore = fireStore;
Run Code Online (Sandbox Code Playgroud)

查询代码:

FirebaseFirestore db = FireStoreUtils.getInstance();
Query query= db.collection(viewType.collectionName());
        query.whereLessThan("endDate", new Date()); 
        return query.orderBy(viewType.sortProperty()).limit(PAGE_SIZE);
Run Code Online (Sandbox Code Playgroud)

我总是获取所有记录,并且看起来 where 子句没有被应用。在 Firebase 控制台上,我看到它endDate存储为时间戳。

来自 Firebase 控制台的文档:

createdDate: null (null)
description: "desc" (string)
endDate: February 3, 2019 at 11:18:58 PM UTC-8 (timestamp)
id: "-7475596197450085332" (string)
title: "title" 
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

2
推荐指数
1
解决办法
1819
查看次数

在开始日期和结束日期之间 Firestore

我有带有startDate和 的文档endDatestartDate我想查询和之间的范围endDate。我可以在一个日期的范围之间查询,如下所示:

whereField("startDate", isGreaterThan: start).whereField("startDate, isLessThan: end)
Run Code Online (Sandbox Code Playgroud)

但我无法像这样查询两个字段:

whereField("startDate", isGreaterThan: start).whereField("endDate", isLessThan: end)
Run Code Online (Sandbox Code Playgroud)

在复合 where 语句中使用多个字段时,Firestore 会发生异常。

firebase google-cloud-firestore

2
推荐指数
1
解决办法
1527
查看次数

运行多个 Firestore 查询并等待所有查询完成

在我的应用程序中,我想在开始片段之前对我的数据库执行 4 次查询。

不知何故,我试图实现的是:

Task t1 = Query1.get().onSuccesListener.... ; 
Task t2 = Query2.get().onSuccesListener.... ; 
Task t3 = Query3.get().onSuccesListener.... ; 
Task t4 = Query4.get().onSuccesListener.... ; 
Run Code Online (Sandbox Code Playgroud)

我无论如何都找不到Task在 Android 中使用它们的方法,因此我尝试在 a 中运行查询AsynTask,然后AsyncTask使用 Latch等待所有操作完成onPostExecuted

这是我AsyncTask的查询之一的示例。

private class GetLandlordsRoomQuery extends AsyncTask<Void, Void, Void> {
        ArrayList<RoomPosted> landlordsRooms = new ArrayList<>();
        @Override
        protected Void doInBackground(Void... voids) {
            Query removeNonTenant = FirebaseFirestore.getInstance()
                    .collection(DataBasePath.ROOMS.getValue())
                    .whereEqualTo("landlordID", FirebaseAuth.getInstance().getUid());

            removeNonTenant.get().addOnSuccessListener(new OnSuccessListener<QuerySnapshot>() {
                @Override
                public void onSuccess(QuerySnapshot queryDocumentSnapshots) {
                    for (DocumentSnapshot d : …
Run Code Online (Sandbox Code Playgroud)

java android android-asynctask firebase google-cloud-firestore

2
推荐指数
1
解决办法
2415
查看次数

更新 firestore 中的文档

我想更新 Firebase 中的文档。问题是您只能更新特定字段?

我想做这样的事情:

fs.collection("users").document(user.id).update(user)
Run Code Online (Sandbox Code Playgroud)

问题是 Kotlin 强制将字段放入更新中,如下所示:

fs.collection("users").document(user.id).update("firstname", user)
Run Code Online (Sandbox Code Playgroud)

但我不希望那样,我想用我的模型而不是字段来更新整个文档。

android kotlin firebase google-cloud-firestore

2
推荐指数
1
解决办法
4039
查看次数

我们如何在 Firestore 中的数组中创建数组?

我需要在类似我创建的数组中添加数组,您可以在图像中看到我需要在成员中添加 2 个数组。我需要保存 uid+name。但没有数组选项,只有字符串、数字、布尔值等。 在此处输入图片说明

firebase google-cloud-firestore

2
推荐指数
1
解决办法
578
查看次数

Firestore 社交媒体好友请求数据模型

我正在使用 Firestore 构建社交媒体应用程序,我想知道构建好友请求数据的最佳方法是什么。

\n

当用户 John 想要向 Mary 和 Anne 添加好友时,我是否创建一个名为的根集合friend_requests并添加 3 个文档:

\n
    \n
  1. 以 John\xe2\x80\x99s 作为键的文档,userId其值将是 Mary 和 Anne\xe2\x80\x99s 的对象,其中包含他们的请求userIdstatus请求(待处理/接受/拒绝)
  2. \n
  3. 以 Mary\xe2\x80\x99suserId作为键的文档和一个带有 JohnuserIdstatusof request对象的数组
  4. \n
  5. 以 Annes\xe2\x80\x99s 作为键的文档userId和一个带有 JohnuserIdstatusof request对象的数组
  6. \n
\n

现在,当安妮和玛丽接受好友请求时,我删除friend_requests集合中的所有三个文档,然后:

\n
    \n
  • 我为每个用户(在users根集合中)添加一个名为的子集合friends,其中包含已接受请求的朋友的 usersIds、displayNames 和 photoURL
  • \n
\n

或者

\n
    \n
  • 我是否应该创建另一个根集合friends,为每个用户提供一个包含朋友信息的文档?
  • \n
\n

它似乎有很多重复的数据,因此我正在尝试解决它并找到在 Firestore …

data-modeling nosql firebase google-cloud-platform google-cloud-firestore

2
推荐指数
1
解决办法
1904
查看次数