续集 / Vue / 节点 - 我想在数据返回到我的视图后使用查询来过滤数据



我有一个表,可以跟踪所有用户对测验的反应。这个查询将成功地从该表中获取所有数据,并将其放入我的TotalQuizResponses数组中,然后我在视图中使用该数组:

this.totalQuizResponses = ((await QuizResponsesService.index()).data)

不过,我也想在我的视图中显示匹配的总数。我知道这个SQL查询成功地从表数据中获得了匹配的总数:

SELECT count(*)
FROM QuizResponses A, QuizResponses B
WHERE A.answerKey = B.answerKey AND A.QuizId = B.QuizId AND A.UserId < B.UserId

我不想仅仅为了获得我视图中已经存在的过滤数据的计数而进行另一次服务调用。有没有办法从视图中过滤数据?我不确定如何使用纯JavaScript复制这种逻辑。感谢阅读。

如果您需要对未过滤的数据进行完全相同的查询:

countResponses(this.totalQuizResponses);
function countResponses(quizData) {
let counter = 0;
for (const quizResponseA of quizData) {
for (const quizResponseB of quizData) {
if (quizResponseA === quizResponseB) { continue; }
const isSameAnswerKey = quizResponseA.answerKey === quicResponseB.answerKey;
const isSameQuizId = quizResponseA.QuizId === quizResponseB.QuizId;
const isSameUser = quizResponseA.UserId === quizResponseB.UserId;
if (isSameAnswerKey && isSameQuizzId && isSameUser) {
counter++;
}
}
}
return counter;
}

如果您已经使用相同的查询筛选了数据,则this.totalQuizResponses.length与本地中所有数据的计数器相同

最新更新