全栈开发求助:实现欧洲首都多字段搜索过滤功能
求助:欧洲首都全栈MVP的多字段搜索过滤实现问题
我是一名Web开发新手,目前正在开发一个关于欧洲首都的全栈MVP。在展示所有首都的主页面中,我希望添加一个搜索栏,支持同时按多个字段(首都名称、所属国家或使用语言)进行过滤。以下是我index.js中当前的代码(无法正常运行):
/* GET capitals by name, country or language */ router.get(`?${dynamicKey}=${dynamicValue}`, async (req, res) => { const { dynamicKey } = req.params; const { dynamicValue } = req.query; try { const results = await db(`SELECT * FROM capital WHERE ${dynamicKey} LIKE "%${dynamicValue}%";`); res.send(results.data); } catch (error) { res.status(500).send(error); } });
当在搜索栏输入内容(可为首都名、国家或语言)时,预期结果是所有符合该值的首都列表。按首都名或国家搜索时,列表通常只有一项;按语言搜索时,可能返回多个结果,例如搜索“german”应返回柏林、维也纳、卢森堡等,搜索“spanish”仅返回马德里。
更新:
感谢所有提供帮助的人!以下是我最终使用的可正常运行代码,供未来有需要的人参考:
/* GET all capitals or filtering */ router.get("/capitals", async (req, res) => { if (!req.query.search) { console.log(req.query); try { const results = await db("SELECT * FROM capital ORDER BY id ASC;"); res.send(results.data); } catch (error) { res.status(500).send(error); } } else { const search = req.query.search; console.log("SQL Query:", search); try { const query = `SELECT * FROM capital WHERE name LIKE "%${search}%" OR country LIKE "%${search}%" OR language LIKE "%${search}%" OR currency LIKE "%${search}%";`; const searchParam = `%${search}%`; const results = await db(query, [searchParam, searchParam, searchParam, searchParam]); res.send(results.data); } catch (error) { res.status(500).send(error); } } });
内容的提问来源于stack exchange,提问作者Maria Gimenez
相关产品推荐
相关产品推荐

