小编Ale*_*amo的帖子

在Cloud Firestore集合上按模式搜索

我正在尝试在Firestore集合上按模式执行过滤器。例如,在我的Firestore数据库中,我有一个名为的品牌adidas。用户将具有搜索输入,其中键入“ adi”,“ adid”,“ adida”或“ adidas”将返回adidas文档。我指出了几种解决方案:


1.获取所有文档并执行前端过滤器

var brands = db.collection("brands");
filteredBrands = brands.filter((br) => br.name.includes("pattern"));
Run Code Online (Sandbox Code Playgroud)

由于Firestore的价格,该解决方案显然不是一个选择。此外,如果文档数量很多,执行请求可能会很长。


2.使用Elasticsearch或Algolia

这可能很有趣。但是,我认为将这些解决方案的支持仅用于模式搜索会有些过头,而且这很快就会变得昂贵。


3. searchName创建对象时的自定义字段

因此,我有了以下解决方案:在创建文档时,创建一个包含一系列可能的搜索模式的字段:

{
    ...
    "name":"adidas",
    "searchNames":[
        "adi",
        "adida",
        "adidas"
    ],
    ...
}
Run Code Online (Sandbox Code Playgroud)

这样就可以使用来访问文档:

filteredBrands = db.collection("brands").where("searchNames", "array-contains", "pattern");
Run Code Online (Sandbox Code Playgroud)

所以我有几个问题:

  • 您如何看待第三个解决方案的针对性和效率?您认为这比使用第三方解决方案(例如Elasticsearch或Algolia)更好?
  • 您还有其他想法在Firestore集合上执行模式过滤吗?

firebase google-cloud-firestore

8
推荐指数
1
解决办法
1728
查看次数

如何在Android的RecyclerView中显示Firestore中的数据?

RecyclerView使用Android的情况下,从现有Firestore数据库显示数据的最佳方法是什么?

这不作为答案中的完整解释,所以我添加了这个Q&A风格,以便可以在评论中链接.

java android firebase android-recyclerview google-cloud-firestore

7
推荐指数
1
解决办法
9847
查看次数

按时间戳按升序对Firestore数据进行排序

我将应用程序发布的想法存储在Firestore中。数据像这个Ideas / {documentID} / IdeaObject一样存储在Firestore中。问题是,当我检索数据时,它没有按发布时间排序。检索到的构想是根据Firestore自动创建的documentID的ID来确定的。我在模型类中使用了ServerTimestamp,并且在检索它时,我在orderByFirestore引用中使用了该方法,但仍然没有使用。

Idea.java

public class Idea {
    @ServerTimestamp
    private Date date;
    private String title, idea, timeCommitment, ideaStage, postedBy, website, videoPitch;
    private int views, favorites;
    private ArrayList<String> lookingFor = new ArrayList<>();
    private ArrayList<String> tags = new ArrayList<>();
    private String userID;
    private String timeStamp;

    public Idea() {
    }

    public Idea(String title, String idea, String timeCommitment, String ideaStage, String postedBy, String website, String videoPitch, int views, int favorites, ArrayList<String> lookingFor, ArrayList<String> tags, String userID, …
Run Code Online (Sandbox Code Playgroud)

java android timestamp firebase google-cloud-firestore

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

在嵌套对象 Firestore Android 中添加新字段

Firestore 文档中有更新嵌套对象字段的代码,但没有关于如何在嵌套对象中添加新字段的代码或文档?

// Assume the document contains:
// {
//   name: "Frank",
//   favorites: { food: "Pizza", color: "Blue", subject: "recess" }
//   age: 12
// }
//
// To update age and favorite color:
db.collection("users").document("frank")
        .update(
                "age", 13,
                "favorites.color", "Red"
        );
Run Code Online (Sandbox Code Playgroud)

正如您在这里看到的,我们正在更新favorites.colorto Red,但是我们如何codefavorites对象中添加新字段?

假设我想更新上述文档如下:

{
  name: "Frank",
  favorites: { food: "Pizza", color: "Blue", subject: "recess", code:32 }
  age: 12
}
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

7
推荐指数
1
解决办法
4137
查看次数

如何使用Hashmap在firebase firestore android中添加/更新/删除数组元素?商店数据库

我想制作一个用户集合,用户将有多个商店作为文档,每个文档都有类似的字段storeName,storeAddressavailableProducts.我的问题是如何管理availableProducts数组?我知道Firestore无法处理数组,我应该使用HashMap.我的可用产品可能包含产品名称,产品价格等字段.我是Firebase的新手,如何availableProduct在Android Studio中使用java 管理数组?

FireBase Firestore数据库图像

java android firebase google-cloud-firestore

7
推荐指数
2
解决办法
8284
查看次数

Google的Firebase UI身份验证失败并显示以下消息(代码:10消息:10)

我制作了一个使用Firebase功能的聊天应用程序Real-time database。我在使用Google身份验证时遇到问题。当我从Play商店下载应用程序时,问题开始了,当我在调试模式下运行应用程序时,身份验证工作正常。当用户尝试登录时,他们会收到一条敬酒消息code:10 message:10

我想在这里指出:我已经添加了SHA1指纹。我该如何解决?

*不确定这是否有帮助,但本教程已逐步进行

java android firebase firebase-authentication firebaseui

7
推荐指数
2
解决办法
3547
查看次数

在 RecyclerView Adapter notifyDataSetChanged() 之后未调用 onBindViewHolder

我正在从 Firebase 数据库获取一些数据,并尝试RecyclerView用它填充适配器。notifyDataSetChanged()调用适配器后,屏幕闪烁并且没有任何反应,我什至无法在 onBindViewHolder 中捕获断点。

这是我的代码:

POJO类:

public class Result2 implements Serializable {

private int score;
private String userName;

public Result2(int score, String userName) {
    this.score = score;
    this.userName = userName;
}

public int getScore() {
    return score;
}


public String getUserName() {
    return userName;
}
Run Code Online (Sandbox Code Playgroud)

}

这是我的活动布局,名为 activity_results.xml,其中包含 RecyclerView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:orientation="horizontal"
    android:weightSum="2">

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:text="USERNAME"
        android:textColor="#000"
        android:textSize="16sp"/>

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:gravity="center"
        android:text="SCORE"
        android:textColor="#000"
        android:textSize="16sp"/> …
Run Code Online (Sandbox Code Playgroud)

android firebase android-recyclerview firebase-realtime-database

7
推荐指数
1
解决办法
3812
查看次数

用于预订应用的 Firestore 数据建模,可轻松查询可用性

我想就以下场景的 Cloud Firestore 数据结构最佳实践寻求建议。

有一个预订/约会应用程序。酒店出租房间。每家酒店都有多个房间。客户可以根据特定日期的空房情况搜索所有酒店的房间。

在 Firestore 中构建可用性数据的最佳方法是什么,以便我可以创建所有酒店的所有可用房间的视图。

我想创建一个单独的集合,我将在其中放置所有引用room IDdate保留的保留。但是,似乎我无法以这种方式搜索可用插槽,因为 Firestore 无法执行“不等于”查询。

所以我想我会为每个房间创建一个数组字段,其中包含所有可用日期作为时间戳。这就产生了另一个问题。即使我可以使用“array_contains”查询,用户也不能通过这种方式检查超过一天的可用性,因为“array_contains”每个查询只能使用一次。

在这种情况下,构建数据的最有效方法是什么?

谢谢!

database-design firebase google-cloud-functions google-cloud-firestore

7
推荐指数
1
解决办法
4946
查看次数

从Firestore读取嵌套对象时出现"RuntimeException:无法反序列化对象"

JSON结构:

{
    "breviario": {
        "metaLiturgia": {
                "fecha"  : "Martes  5 de febrero del 2019",
                "tiempo" : "PROPIO DE LOS SANTOS",
                "semana"   : "",
                "mensaje": "",
                "salterio": "",
                "color":0,
                "meta": ""
        },
        "santo": {
                "nombre": "Santa Águeda, virgen y mártir",
                "vida": "Padeció el martirio en Catania (Sicilia), probablemente en la persecución de Decio. Desde la antigüedad su culto se extendió por toda la Iglesia y su nombre fue introducido en el Canon romano."
        },

        "oficio": {
            "himno": {
                "texto": "Testigos de …
Run Code Online (Sandbox Code Playgroud)

java android firebase google-cloud-firestore

7
推荐指数
2
解决办法
960
查看次数

是否可以重命名 Firestore 集合中的字段?

我是 Firebase 中 Cloud Firestore 的新手。在我的项目中,我创建了集合,但我需要为每个集合重命名字段名称。是否可以?任何帮助将不胜感激。

firebase google-cloud-firestore

7
推荐指数
2
解决办法
3251
查看次数