gpt4 book ai didi

java - 如何获取文档中数组的索引

转载 作者:行者123 更新时间:2023-11-29 22:57:46 25 4
gpt4 key购买 nike

我想按 timeMillis 对 mRecipies 列表进行排序,但由于 timeMillis 以数组的形式保存在文档中,我无法获取我的 dateWhenSetFavorites 数组索引。

https://imgur.com/sI0ZmOC

试图思考解决方案,但无法想出办法。

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) witch is not universal.

最佳答案

正如 Doug Stevenson 在他的回答中提到的,您无法对数组中出现的任何内容进行排序,但有一个解决方法。如果允许您进行一些数据库架构更改,我建议您创建另一个这样的集合:

Firestore-root
|
--- favoriteRecipeModels (collection)
|
--- uid (document)
|
--- userFavoriteRecipeModels (collection)
|
--- recipeId
|
--- dateWhenSetFavorite: 1564...5677
|
--- recipeId: "tC19...CmiT"
|
--- recipeMealType: "Blynai"
|
--- userId: "tx9O...4jd2"

要获取单个用户所有最喜欢的食谱,您可以简单地使用:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
db.collection("favoriteRecipeModels").document("uid").collection("userFavoriteRecipeModels");

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

Firestore-root
|
--- favoriteRecipeModels (collection)
|
--- recipeId
|
--- dateWhenSetFavorite: 1564...5677
|
--- recipeId: "tC19...CmiT"
|
--- recipeMealType: "Blynai"
|
--- userId: "tx9O...4jd2"

所需的查询应该是:

db.collection("favoriteRecipeModels").whereEqualTo("userId", uid);

关于java - 如何获取文档中数组的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57232947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com