我想将mRecipies列表按timeMillis排序,但是由于timeMillis作为数组保存在文档中,所以无法获得dateWhenSetFavorites数组索引。
试图想出解决办法,但却想不出来。
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)女巫不是通用的。
发布于 2019-07-28 08:58:49
正如Doug在他的回答中提到的那样,你不可能对数组中出现的任何东西进行排序,但是有一个解决办法。如果允许您进行一些数据库模式更改,我建议您创建另一个集合,如下所示:
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);https://stackoverflow.com/questions/57232947
复制相似问题