如何根据名称获取鸡尾酒列表

问题描述

如果我将玛格丽塔酒放入我应用程序的searchView中,可以从名称中获取所有鸡尾酒的名称。它将返回所有与该查询匹配的鸡尾酒。我保存了用户所做的所有查询,即使他们处于离线状态也可以让他们搜索鸡尾酒。

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

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

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

我已经尝试过使用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)
    }

解决方法

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...