如何在Sequelize中使用一组成分ID进行查询以返回包含所有成分ID的食谱?

问题描述

我一直试图让我的查询在Express / Sequelize / Postgres中运行,但是我无法在查询模型时得到想要的结果。

本质是我想过滤我的食谱,这些食谱通过recipeIngredients.ingredientSpellings与IngredientIds关联。例如,我有苹果和肉桂,查询为[1,2](queriedIngredientIds)。我要寻找的是检索包含(至少)苹果和肉桂以及更多成分的食谱。

挑战1: 目前,我得到的食谱包含其中一个或两个(即苹果和/或肉桂)。我至少要两种成分。看来[Op.in]不是我的解决方案吗? 挑战2: 当我得到结果时,仅返回成分及其相关数据,而未返回其他数据。因此,如果食谱中有苹果,肉桂和糖,则仅返回前两个。我怎么也可以包括它们?

我的问题似乎也很相似:如何通过使用多个标签进行过滤来返回项目?与这些演员一起返回电影,并返回整个演员。但是,找不到解决方案。

感谢您的帮助,也很乐意在需要时进一步解释。 关联在这里可能有点复杂,我可以详细说明,但似乎并不重要。

router.get("/query",async (req,res) => {
  try {
    const queriedIngredientIds = JSON.parse(req.query.ingredientIds)

    const queryResult = await Recipe.findAndCountAll({
      where: {
        "$recipeIngredients.ingredientSpelling.ingredient.id$": {
          [Op.in]: queriedIngredientIds
        }
      },include: [
        {
         model: User,},{
          model: RecipeIngredient,include: [
            {
              model: IngredientSpelling,include: {
                model: Ingredient
              }
            }
          ]
        }
      ]
    })



    const responseObject = {
      message: "Recipes filtered by palette delivered",filteredRecipes: queryResult
    }

    res.status(200).send(responseObject)
  } catch (e) {
    console.log(e)
  }
})

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

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