javascript 为什么UI刷新顺序不同会导致where条件?

qvtsj1bj  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(90)

我使用NodeJS/Express和React。
我有一个问题,我的UI造成的一个请求。
我有一个网站,显示了许多食谱,我可以要么搜索一个食谱的名称与搜索栏,要么选择一些食谱的类别。这两个是由同一个请求管理的:

getAllPaginated: async (
    startIndex,
    endIndex,
    limit,
    page,
    tag,
    nameRecipe
  ) => {
    let whereConditionTags = {};
    let whereConditionName = {};

    if (tag) {
      Array.isArray(tag) && (whereConditionTags = { name: { [Op.in]: tag } });

      !Array.isArray(tag) &&
        (whereConditionTags = { name: { [Op.startsWith]: tag } });
    }
    if (nameRecipe) {
      whereConditionName = { name: { [Op.startsWith]: nameRecipe } };
    }
    
    const recipes = await db.Recipe.findAll({
      include: [
        Ingredient,
        { model: User, as: "creator" },

        { model: Tag, where: { ...whereConditionTags } },
        Comment,
        { model: User, as: "reactionUser" },
      ],

      order: [["createdAt", "DESC"]],
      where: {
        ...whereConditionName,
      },

      offset: startIndex,
      limit: limit,
    });
    return recipes.map((r) => new RecipeDTO(r));

  },

问题来自“{ model:标记,其中:{ ...whereConditionTags } }”。当我保持这个条件并发表评论或喜欢一个食谱时,页面会刷新,但我的评论以另一种顺序排列,类别顺序也会改变...
如果我把它取下来,一切都很好。
有人能告诉我这东西是从哪儿来的吗?多谢了!
我尝试了一些修复,比如做了2个分离请求,但我也需要在where条件中绝对传递数据。

mwkjh3gx

mwkjh3gx1#

不确定这是否有效,但尝试更具体的顺序,像这样:

order: [
         ["createdAt", "DESC"],
         [{model: Tag}, "createdAt", "DESC"]
       ],

我猜是因为Tag表中的未排序数据使您的请求一次又一次地不同。

相关问题