gpt4 book ai didi

javascript - 有条件地从数据库中按多列获取行的函数

转载 作者:行者123 更新时间:2023-12-03 01:44:35 25 4
gpt4 key购买 nike

假设我有一个 /moviesGET 路由(它实际上不是电影,但这样解释会更容易)

在客户端,我有一个表格,我想根据下拉菜单过滤电影:

流派、年份、国家/地区、类型(默认情况下,它们全部位于 ALL 上)

这些也是 movies 表的数据库列。我正在使用node-postgres

所以我的查询将是这样的:

  const query = {
text: 'SELECT * FROM movies WHERE genre = $1 AND year = $2 AND country = $3 AND type = $4',
values: [genre, year, country, type],
};

但是,如果用户不从下拉列表中选择任何内容(将是 ALL),则该方法不起作用

最好的方法是什么,这样如果客户端发送ALL,它就不会将该列添加到查询中?

最佳答案

我认为你别无选择,你应该只在适用的情况下提出你的条件......

例如:

const params = {
genre: null,
year: 2015,
country: null,
type: 'western',
};

const query = {
text: 'SELECT * FROM movies',
values: Object.values(params).filter(x => x),
};

if (Object.values(params).filter(x => x).length) {
query.text += ' WHERE '
let i = 1;
for (const param of Object.keys(params).filter(x => params[x])) {
query.text += `${param} = $${i} AND `
i++;
}
query.text = query.text.substr(0, query.text.length - 5);
}

console.log(query); // {"text":"SELECT * FROM movies WHERE year = $1 AND type = $2","values":[2015,"western"]}

希望有帮助。

关于javascript - 有条件地从数据库中按多列获取行的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50696997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com