【问题标题】:How to get a List of cocktails based on the name如何根据名称获取鸡尾酒列表
【发布时间】:2020-08-11 14:56:05
【问题描述】:

如果我将玛格丽塔酒放在我的应用的 searchView 中,我可以从我的 API 中按名称获取所有鸡尾酒。它将返回与该查询匹配的所有鸡尾酒。我保存了用户所做的所有查询,以便他们即使在离线时也能搜索鸡尾酒。

我创建了这个查询,如果鸡尾酒的名称与 searchView 中传递的名称匹配,则该查询应返回鸡尾酒列表

@Query("SELECT * 
        FROM cocktailTable 
        WHERE cocktail_name = :cocktailName")
suspend fun getCocktails(cocktailName:String):List<CocktailEntity>

但是,即使 fetch 已成功将这些鸡尾酒添加到我的数据库中,这也不会返回任何鸡尾酒,有什么线索吗?

我已经尝试过这样的 IN 运算符

@Query("SELECT * 
        FROM cocktailTable 
        WHERE cocktail_name IN (:cocktailName)")
suspend fun getCocktails(cocktailName:String):List<CocktailEntity>

但它也不会返回具有该名称的所有鸡尾酒

为调用添加代码

     override suspend fun getCocktailByName(cocktailName: String): Resource<List<Cocktail>>? {
    
            when (val cocktailList = networkDataSource.getCocktailByName(cocktailName)) {
                is Resource.Success -> {
                    for (cocktail in cocktailList.data) {
                        saveCocktail(cocktail.asCocktailEntity())
                    }
                }
                is Resource.Failure -> {
                    return getCocktails(cocktailName)
                }
            }
            return getCocktails(cocktailName)
        }

 override suspend fun getCocktails(cocktailName: String): Resource<List<Cocktail>>? {
        return cocktailDao.getCocktails(cocktailName)
    }

【问题讨论】:

  • 您确定鸡尾酒数据在您的数据库中吗?您可以使用“SELECT * from CocktailTable”来验证它。你确定你的表名和列名吗?
  • 是的,我已经填充了它们,我在没有这个查询的情况下检查了它
  • 你能把你的代码放在你打电话给getCocktails的地方吗?
  • 完成@Powkachu 编辑
  • 对不起,我没找到问题

标签: android sql kotlin mvvm android-room


【解决方案1】:

试试LIKE '%' || :drinkName || '%' 你的 api 可能会给你空格。您也可以在保存实体之前尝试修剪。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-22
    • 2019-01-09
    • 1970-01-01
    • 2021-01-05
    • 2021-11-26
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多