首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获取文档内部数组的索引

如何获取文档内部数组的索引
EN

Stack Overflow用户
提问于 2019-07-27 14:14:51
回答 3查看 444关注 0票数 1

我想将mRecipies列表按timeMillis排序,但是由于timeMillis作为数组保存在文档中,所以无法获得dateWhenSetFavorites数组索引。

https://imgur.com/sI0ZmOC

试图想出解决办法,但却想不出来。

代码语言:javascript
复制
Collections.sort(mRecepies, new Comparator<RecipeModel>() {
  @Override
  public int compare(RecipeModel o1, RecipeModel o2) {
    return (int)(o1.getFavouriteRecipeModels().get(0).getDateWhenSetFavourite() - o2.getFavouriteRecipeModels().get(0).getDateWhenSetFavourite());
  }
});

如何构造数据库或每次获取索引?在我的代码中,我输入的get(0)女巫不是通用的。

EN

Stack Overflow用户

回答已采纳

发布于 2019-07-28 08:58:49

正如Doug在他的回答中提到的那样,你不可能对数组中出现的任何东西进行排序,但是有一个解决办法。如果允许您进行一些数据库模式更改,我建议您创建另一个集合,如下所示:

代码语言:javascript
复制
Firestore-root
    |
    --- favoriteRecipeModels (collection)
            |
            --- uid (document)
                 |
                 --- userFavoriteRecipeModels (collection)
                         |
                         --- recipeId
                               |
                               --- dateWhenSetFavorite: 1564...5677
                               |
                               --- recipeId: "tC19...CmiT"
                               |
                               --- recipeMealType: "Blynai"
                               |
                               --- userId: "tx9O...4jd2"

要获得单个用户最喜欢的菜谱,只需使用:

代码语言:javascript
复制
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
db.collection("favoriteRecipeModels").document("uid").collection("userFavoriteRecipeModels");

或者需要使用wehereEqualTo()调用的查询的一个更简单的模式是:

代码语言:javascript
复制
Firestore-root
    |
    --- favoriteRecipeModels (collection)
            |
            --- recipeId
                   |
                   --- dateWhenSetFavorite: 1564...5677
                   |
                   --- recipeId: "tC19...CmiT"
                   |
                   --- recipeMealType: "Blynai"
                   |
                   --- userId: "tx9O...4jd2"

所需的查询应该是:

代码语言:javascript
复制
db.collection("favoriteRecipeModels").whereEqualTo("userId", uid);
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57232947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档