我使用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条件中绝对传递数据。
1条答案
按热度按时间mwkjh3gx1#
不确定这是否有效,但尝试更具体的顺序,像这样:
我猜是因为Tag表中的未排序数据使您的请求一次又一次地不同。