From 8881b5953d3caa3048453f7bfcee993b9f6cb497 Mon Sep 17 00:00:00 2001 From: ruleroller Date: Mon, 8 Jun 2020 17:33:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A4=9A=E4=B8=AAfilter=E4=B9=8B?= =?UTF-8?q?=E9=97=B4=E4=BF=AE=E6=94=B9=E4=B8=BA=E4=B8=8E=E9=80=BB=E8=BE=91?= =?UTF-8?q?=20(#4885)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/middleware/parameter.js | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/lib/middleware/parameter.js b/lib/middleware/parameter.js index bc81559a1..54a3ab950 100644 --- a/lib/middleware/parameter.js +++ b/lib/middleware/parameter.js @@ -130,20 +130,27 @@ module.exports = async (ctx, next) => { } }; - if (ctx.query.filter || ctx.query.filter_title || ctx.query.filter_description || ctx.query.filter_author) { - if (ctx.query.filter) { - ctx.query.filter_title = ctx.query.filter; - ctx.query.filter_description = ctx.query.filter; - } + if (ctx.query.filter) { + ctx.state.data.item = ctx.state.data.item.filter((item) => { + const title = item.title || ''; + const description = item.description || title; + const author = item.author || ''; + const isFilter = title.match(makeRegex(ctx.query.filter)) || description.match(makeRegex(ctx.query.filter)) || author.match(makeRegex(ctx.query.filter)); + return isFilter !== null; + }); + } + + // 启用filter参数时,无效filter_title/description/author + if (!ctx.query.filter && (ctx.query.filter_title || ctx.query.filter_description || ctx.query.filter_author)) { ctx.state.data.item = ctx.state.data.item.filter((item) => { const title = item.title || ''; const description = item.description || title; const author = item.author || ''; let isFilter = true; - ctx.query.filter_title && (isFilter = isFilter && !title.match(makeRegex(ctx.query.filter_title))); - ctx.query.filter_description && (isFilter = isFilter && !description.match(makeRegex(ctx.query.filter_description))); - ctx.query.filter_author && (isFilter = isFilter && !author.match(makeRegex(ctx.query.filter_author))); - return !isFilter; + ctx.query.filter_title && (isFilter = isFilter && title.match(makeRegex(ctx.query.filter_title))); + ctx.query.filter_description && (isFilter = isFilter && description.match(makeRegex(ctx.query.filter_description))); + ctx.query.filter_author && (isFilter = isFilter && author.match(makeRegex(ctx.query.filter_author))); + return isFilter !== null; }); }